UDP服务器运行良好但它只接受客户端请求一次

时间:2014-12-12 08:07:42

标签: java android server

我已经建立了一个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()));

2 个答案:

答案 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)

您的代码暗示您只想接收一个数据包。 如果要接收更多数据包,则必须在循环中执行此操作,并按定义的停止条件处理循环的运行时。