我是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);
}
}
这样,代码等待用户输入。我需要在所有节点上部署相同的代码,如果部署了相同的代码,每个节点将首先发送数据包而不是监听其他节点。
答案 0 :(得分:0)
你必须使用多线程编程来监听套接字并将数据发送到套接字同时