JAVA UDP 服务器收不到数据包

标签 java udp

我有一个示例代码如下,套接字绑定(bind)到 IP 10.10.88.11 和端口 9876。我使用 wireshark 测试了 2 个条件,如下所示。两台 PC 都在同一个子网中。

  1. 从同一台电脑 (10.10.88.11) 发送 UDP 数据包 - UDP 服务器能够接收
  2. 从另一台电脑 (10.10.88.10) 发送 UDP 数据包 - UDP 服务器无法接收但 Wireshark(位于 10.10.88.11)能够捕获数据包

我已经在互联网上搜索过,但找不到解决方案。我在创建 InetScoketAddress 时做错了什么吗?

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);
           }

  }
}

最佳答案

我相信 Wireshark 能够在数据包被防火墙评估之前抓取数据包,这意味着您会检测到它们,但它们永远不会到达 java 应用程序。您是否尝试停用防火墙?

关于JAVA UDP 服务器收不到数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37876145/

相关文章:

java - 在 Java 中将 DataModel 转换为 List

java - 在不转换为字符串的情况下检查 int 是否是回文?

c++ - 无法从端口 2368 (Linux) C 接收 UDP 流

windows - 如何在 Windows 7 中使用 C++ 检测哪个网络接口(interface)接收到 UDP 数据包?

java - ElasticSearch支持AND、OR、NOT任意组合

不需要新的 : allocated contiguosly 的对象的 Java 数组

JavaFX Scene Builder 2.0 段错误

c - 如何了解 UDP 数据包在我的 ubuntu C 程序中被丢弃的位置

c++ - "Correct"发送 UDP 数据报序列的方式?

java - 强制android立即发送UDP数据包?