【问题标题】:Datagramsocket is not receiving数据报套接字未接收
【发布时间】:2015-01-20 18:55:16
【问题描述】:

大家好,我是java新手,我正在尝试datagramsocket发送和接收数据包。我的客户端正在发送数据包,但服务器没有接收。 请帮助我,在此先感谢。
我的客户端代码如下:

outString = "Hello World"  
InetAddress hostAddress = InetAddress.getByName("localhost");
buf = outString.getBytes();
DatagramPacket out = new DatagramPacket(buf, buf.length, hostAddress, 4002);
s.send(out);

我的服务器端代码是:

DatagramSocket sk = new DatagramSocket(PORT);
DatagramPacket dgp = new DatagramPacket(buf, buf.length);
sk = new DatagramSocket(PORT); //PORT is 4002
 while (true) {
    sk.receive(dgp);
    String rcvd = new String(dgp.getData(), 0, dgp.getLength()) + ", from address: "
      + dgp.getAddress() + ", port: " + dgp.getPort();
  System.out.println(rcvd);
}

【问题讨论】:

  • 任何错误信息?如果是,在哪里?

标签: java


【解决方案1】:

这个例子适合我

public static void main(String[] args) throws IOException {
    if (args.length == 0) {
        byte[] buf = new byte[128];
        DatagramPacket dgp = new DatagramPacket(buf, buf.length);
        DatagramSocket sk = new DatagramSocket(PORT); //PORT is 4002
        while (true) {
            sk.receive(dgp);
            String rcvd = new String(dgp.getData(), 0, dgp.getLength()) + ", from address: "
                    + dgp.getAddress() + ", port: " + dgp.getPort();
            System.out.println(rcvd);
        }
    } else {
        String outString = "Hello World";
        InetAddress hostAddress = InetAddress.getByName("localhost");
        byte[] buf = outString.getBytes();
        DatagramPacket out = new DatagramPacket(buf, buf.length, hostAddress, 4002);
        DatagramSocket s = new DatagramSocket();
        s.send(out);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-18
    • 2017-01-12
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多