2

我正在尝试在 Java 中使用DatagramPacket和类接收一个简单的字符串。DatagramSocket

这是我的代码:

public static void main(String [] args){

    DatagramSocket aSocket = null;

    try{
        aSocket= new DatagramSocket();
        String aMessage = "my message";
        System.out.println("1");
        byte [] m = aMessage.getBytes();
        InetAddress aHost = InetAddress.getByName("localhost");
        int serverPort = 6789;
        DatagramPacket request = new DatagramPacket(m,aMessage.length(),aHost,serverPort);
        System.out.println("2");
        aSocket.send(request);
        System.out.println("3");
        byte [] buffer = new byte[1000];
        System.out.println("4");
        DatagramPacket reply = new DatagramPacket(buffer,buffer.length);
        aSocket.receive(reply);
        System.out.println("5");
        System.out.println("DATA RECEIVED" + reply.getData());
        aSocket.close();

    }
    catch(SocketException ex){
       ex.printStackTrace();
    }

    catch(IOException ioe){
       ioe.printStackTrace();
    }
}

它不打印接收到的数据。我System.out.println只是看看代码在哪里执行,它停在 4,它不打印 5,这意味着问题刚好低于 4。为什么我没有收到数据,有人可以帮我解决这个问题吗?

4

1 回答 1

3

@avi 不要使用相同的数据报套接字来获取依赖。要获得回复,您必须提及服务器数据报 socket.use 的端口号

DatagramSocket datagramSocket = new DatagramSocket(6789);// Which is given by you only

然后使用 datagramSocket.receive(reply);

也可以使用此方法获取地址

InetAddress aHost = InetAddress.getLocalHost();

代替

InetAddress aHost = InetAddress.getByName("localhost");

参考这个链接

http://www.java2s.com/Code/Java/Network-Protocol/UseDatagramSockettosendoutandreceiveDatagramPacket.htm

于 2013-02-02T09:43:48.920 回答