Java DatagramPacket和DatagramSocket不接收数据

时间:2013-02-02 09:27:08

标签: java

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

这是我的代码:

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以下。为什么我没有收到数据,任何人都可以帮助我好吗?

1 个答案:

答案 0 :(得分: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