【问题标题】:Java UDP client not receiving from server(simple client server udp code)Java UDP 客户端未从服务器接收(简单的客户端服务器 udp 代码)
【发布时间】:2017-06-10 20:54:44
【问题描述】:

我是 java 网络的新手,我做了一个客户端-服务器 udp 程序。服务器端工作正常,但客户端没有从服务器接收任何东西。请更正错误。服务器端完全运行,但客户端直到结束才工作。任何帮助都会很棒。

public class Client {
    public static void main (String args[]) throws Exception {
        DatagramSocket s = new DatagramSocket();
        String msg = "Hello! ,from client. ";
        byte[] b = msg.getBytes();
        InetAddress ia = InetAddress.getLocalHost();
        DatagramPacket dp = new DatagramPacket(b, b.length, ia, 9999);
        s.send(dp);

        byte[] b2 = new byte[1024]; //byte array
        DatagramPacket dip = new DatagramPacket(b2, b2.length);
        s.receive(dip);
        String str = new String(dip.getData());
        System.out.println("From server" + str);
    }
}

public class Server {
    void run() throws Exception {
        DatagramSocket ds = new DatagramSocket(9999);
        byte [] b = new byte[1024];

        DatagramPacket dp = new DatagramPacket(b, b.length);
        ds.receive(dp);
        String msg = new String(dp.getData());
        System.out.println("Message from client:" + msg);

        //giving back to client
        String str = "HI!, from server.";
        byte[] b2 = str.getBytes();
        InetAddress ia = InetAddress.getLocalHost();
        DatagramPacket dop = new DatagramPacket(b2, b2.length, ia, 9999);
        ds.send(dop);
        System.out.println("Message sent back");
        ds.close();
    }

    public static void main(String args[]) throws Exception {
        Server server = new Server();
        server.run();
    }
}

【问题讨论】:

    标签: java networking network-programming udp


    【解决方案1】:

    您的服务器正在向 localhost 的 9999 端口发送所有响应。您需要更新服务器,以便它读取发件人的地址:

    InetAddress ia = dp.getAddress();
    int port = dp.getPort();
    DatagramPacket dop = new DatagramPacket(b2, b2.length, ia, port);
    

    【讨论】:

      【解决方案2】:

      错误是您的服务器和客户端在同一主机上运行,​​因此它们必须侦听不同的端口,如下所示:

      服务器

      import java.net.DatagramPacket;
      import java.net.DatagramSocket;
      import java.net.InetAddress;
      
      public class Server {
          void run() throws Exception {
              DatagramSocket ds = new DatagramSocket(9999);
              byte [] b = new byte[1024];
      
              DatagramPacket dp = new DatagramPacket(b, b.length);
              ds.receive(dp);
              String msg = new String(dp.getData(),0,dp.getLength(),"UTF-8");
              System.out.println("Message from client:" + msg);
      
              //giving back to client
              String str = "HI!, from server.";
              byte[] b2 = str.getBytes();
              InetAddress ia = InetAddress.getLocalHost();
      
              DatagramPacket dop = new DatagramPacket(b2, b2.length, ia, 9998);
              ds.send(dop);
              System.out.println("Message sent back");
              ds.close();
          }
      
          public static void main(String args[]) throws Exception {
              Server server = new Server();
              server.run();
          }
      }
      

      和客户

      import java.net.DatagramPacket;
      import java.net.DatagramSocket;
      import java.net.InetAddress;
      
      public class Client {
          public static void main (String args[]) throws Exception {
              DatagramSocket s = new DatagramSocket(9998);
              String msg = "Hello! ,from client. ";
              byte[] b = msg.getBytes();
              InetAddress ia = InetAddress.getLocalHost();
              DatagramPacket dp = new DatagramPacket(b, b.length, ia, 9999);
              s.send(dp);
      
              byte[] b2 = new byte[1024]; //byte array
              DatagramPacket dip = new DatagramPacket(b2, b2.length);
              s.receive(dip);
              String str = new String(dip.getData(),0,dip.getLength(),"UTF-8");
              System.out.println("From server" + str);
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-27
        • 1970-01-01
        • 1970-01-01
        • 2020-06-22
        相关资源
        最近更新 更多