Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java UDP-Can';无法从DatagramPacket获取数据_Java_Android_Udp - Fatal编程技术网

Java UDP-Can';无法从DatagramPacket获取数据

Java UDP-Can';无法从DatagramPacket获取数据,java,android,udp,Java,Android,Udp,我尝试通过UDP在android和pc之间发送和接收数据。 这是android中的代码: String hostAddress = "10.0.2.2"; private static final int port = 2017; DatagramSocket socket = null ; InetAddress host; String message = "hello"; @Override public void run() { try { host = Ine

我尝试通过UDP在android和pc之间发送和接收数据。 这是android中的代码:

String hostAddress = "10.0.2.2";
private static final int port = 2017;
DatagramSocket socket = null ;
InetAddress host;
String message = "hello";

@Override
public void run() {
    try {
        host = InetAddress.getByName(hostAddress);
        socket = new DatagramSocket();
        DatagramPacket packet = new DatagramPacket(message.getBytes(), message.length(), host, port);
        socket.setBroadcast(true);
        while(true){
            socket.send(packet);
            Thread.sleep(5000);
        }
    } catch (UnknownHostException e) {
        e.printStackTrace();
    } catch (SocketException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}
在pc中输入和代码:

DatagramSocket socket;
public final int port = 2017;
public ArrivedMessages(){
    try {
        socket = new DatagramSocket(port);
        System.out.println( "Ready!") ;
        byte inFromClient[];
        inFromClient = new byte[256];
        DatagramPacket packet = new DatagramPacket(inFromClient, inFromClient.length);
        while(true){
            socket.receive(packet);
            String data = new String(packet.getData());
            System.out.println(packet.getData().toString());
        }

    } catch (SocketException e1) {
        e1.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
但pc中的输出并不像android代码中的“hello”消息。这是我的输出:
[B@462d5aee
我该怎么做才能修好它?谢谢

String data = new String(packet.getData());
这应该是:

String data = new String(packet.getData(), 0, packet.getLength());
System.out.println(data);

应该是:

String data = new String(packet.getData(), 0, packet.getLength());
System.out.println(data);
否则,您只需打印长度不正确的字节数组的
byte[].toString()

这应该是:

String data = new String(packet.getData(), 0, packet.getLength());
System.out.println(data);

应该是:

String data = new String(packet.getData(), 0, packet.getLength());
System.out.println(data);
否则,您只需打印长度不正确的字节数组的
byte[].toString()