#java #sockets #networking #udp
#java #сокеты #сеть #udp
Вопрос:
Я новичок в программировании сокетов и сетях, поэтому, пожалуйста, помогите мне учиться.
Я создаю приложение 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. Покажите свой код.
2. Отредактировал вопрос. Заранее спасибо @saurav
Ответ №1:
вы должны использовать многопоточное программирование для одновременного прослушивания сокета и отправки данных в сокет
Комментарии:
1. Да. Мне было интересно, есть ли какой-либо другой способ обойти это. Я создал приложение для чата как часть проекта колледжа, и мне было интересно, могу ли я улучшить его и все такое. Спасибо за устранение путаницы @AzhirAhmadi 🙂
2. вы можете использовать неблокирующий сокет