如何识别UDP Chat中是否有传入请求?

时间:2016-10-16 04:57:44

标签: java sockets networking udp

我是Socket编程和网络的新手,所以请帮助我学习。

我正在创建一个UDP聊天应用程序,其中节点可以向连接到聊天网络的所有对等方发送消息。

如何检查是否有传入数据包?如果没有传入数据包,我想发送数据包,如果有任何传入数据包,我会收到它然后发送。

感谢您的建议。

以下是代码:

while(true){        
     String sendsentence2 = inFromUser.readLine();
     String[] arg = sendsentence2.split(",");
     if(arg.length==3){
         System.out.println("File transfer initiated!!");
     }else{
         byte[] receiveData2 = new byte[40];
         byte[] sendData2 = new byte[40];
         sendData2 = sendsentence2.getBytes();
         DatagramPacket sendPacket2 = new DatagramPacket(sendData2, sendData2.length, BroadCastAddress, 9876);
         serverSocket.send(sendPacket2);
         DatagramPacket receivePacket2 = new DatagramPacket(receiveData2, receiveData2.length);
         serverSocket.receive(receivePacket2);
         String sentence2 = new String( receivePacket2.getData());                        
         InetAddress replyIPAddress = receivePacket2.getAddress();
         System.out.println("Received from " + replyIPAddress + " : " + sentence2);
     }
}

这样,代码等待用户输入。我需要在所有节点上部署相同的代码,如果部署了相同的代码,每个节点将首先发送数据包而不是监听其他节点。

1 个答案:

答案 0 :(得分:0)

你必须使用多线程编程来监听套接字并将数据发送到套接字同时