【问题标题】:UDP server is working well but it accepts the client request only onceUDP 服务器运行良好,但它只接受一次客户端请求
【发布时间】:2014-12-12 08:07:42
【问题描述】:

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

【问题讨论】:

    标签: java android server


    【解决方案1】:

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

    【讨论】:

    • 请你提供代码的小实例!!
    • @koolmaan 你需要一个循环的例子吗?
    • 如果你能提供,我很容易按照要求尽快解决
    【解决方案2】:

    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 服务器。您可以将其移动到重复代码结束的位置。希望这会有所帮助!

    【讨论】:

    • 我认为这可能是真的,但是如何将数据包发送到接收到的客户端。他会怎么做?
    猜你喜欢
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 2012-03-27
    • 1970-01-01
    • 2018-04-16
    • 1970-01-01
    相关资源
    最近更新 更多