我已经建立了一个UDP服务器。它运行良好,但问题是,它只接受客户端请求一次并给出响应,但在发送第二个请求时,它不回复客户端,也不接收消息。
这是我的代码.......我无法解决此问题
InetAddress serverAddr = InetAddress.getByName(SERVERIP);
DatagramSocket socket = new DatagramSocket(SERVERPORT,
serverAddr);
byte[] buf = new byte[1024];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
updatetrack("Server: Receiving\n");
socket.receive(packet);
updatetrack("Server: Message received: '"
+ new String(packet.getData()) + "'\n");
updatetrack("Server: Succeed!\n");
updatetrack("I want to send the data to you .......");
byte[] sbuff;
sbuff = ("opSERVERSTARTED").getBytes();
socket.send(new DatagramPacket(sbuff, sbuff.length, packet
.getAddress(), packet.getPort()));
答案 0 :(得分:0)
socket.receive(packet);
我认为这段代码必须在while循环中,因此它可以接受多个客户端。像这样:
InetAddress serverAddr = InetAddress.getByName(SERVERIP);
DatagramSocket socket = new DatagramSocket(SERVERPORT,
serverAddr);
byte[] buf = new byte[1024];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
while (someCondition) {
updatetrack("Server: Receiving\n");
socket.receive(packet);
updatetrack("Server: Message received: '"
+ new String(packet.getData()) + "'\n");
updatetrack("Server: Succeed!\n");
updatetrack("I want to send the data to you .......");
byte[] sbuff;
sbuff = ("opSERVERSTARTED").getBytes();
socket.send(new DatagramPacket(sbuff, sbuff.length, packet
.getAddress(), packet.getPort()));
}
我不确定大括号的结尾,我不熟悉UDP服务器。您可以将其移动到重复代码结束的位置。希望这有帮助!
答案 1 :(得分:0)
您的代码暗示您只想接收一个数据包。 如果要接收更多数据包,则必须在循环中执行此操作,并按定义的停止条件处理循环的运行时。