JAVA UDP服务器无法接收数据包。

3
我有一个样例代码如下,套接字绑定到IP 10.10.88.11和端口9876。我进行了以下两种条件的测试,使用Wireshark进行监测,这两台计算机都在同一子网中。
  1. 从相同的计算机(10.10.88.11)发送UDP数据包 - UDP服务器能够接收
  2. 从另一台计算机(10.10.88.10)发送UDP数据包 - UDP服务器无法接收,但Wireshark(在10.10.88.11上)可以捕获数据包
我已经在互联网上搜索了很多,但找不到解决方案。我在创建InetSocketAddress时有哪些错误吗?
import java.io.*;
import java.net.*;

public class UDPServer {
    public static void main(String args[]) throws Exception {        

     InetSocketAddress address = new InetSocketAddress("10.10.88.11", 9876);

     DatagramSocket serverSocket = new DatagramSocket(address);
        byte[] receiveData = new byte[1024];
        byte[] sendData = new byte[1024];
        while(true)
           {
              DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
              System.out.println("Waiting to receive");
              serverSocket.receive(receivePacket);
              String sentence = new String( receivePacket.getData());
              System.out.println("RECEIVED: " + sentence);
              InetAddress IPAddress = receivePacket.getAddress();
              int port = receivePacket.getPort();
              String capitalizedSentence = sentence.toUpperCase();
              sendData = capitalizedSentence.getBytes();
              DatagramPacket sendPacket =
              new DatagramPacket(sendData, sendData.length, IPAddress, port);
              serverSocket.send(sendPacket);
           }

  }
}
1个回答

3
我相信Wireshark能够在防火墙评估数据包之前抓取这些数据包,这意味着您可以检测到它们,但它们将永远不会到达Java应用程序。您尝试过停用防火墙吗?

谢谢您...以前从来没有考虑过防火墙被禁用的问题。有人重新启用了它。谢谢您... - Loon Yew
1
没错,它有效...从这里学到了wireshark能够在防火墙评估之前抓取数据包的知识。谢谢。 :) - Loon Yew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接