当前位置: 首页 > 知识库问答 >
问题:

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

左丘修齐
2023-03-14

我有一个示例代码如下,套接字绑定到IP10.10.88.11和端口9876。我用下面的wireshark测试了2种情况。两台电脑都在同一个子网中。

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

我在网上搜索过,但找不到解决办法。在创建InetScoket地址时,我做错了什么吗?

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个答案

韦欣德
2023-03-14

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

 类似资料:
  • 我正在做一个使用Java和UDP发送者和接收者的类项目。问题的前提是读取文本文件,将内容存储在数据包中,发送数据包,接收数据包,然后在屏幕上读取文件,并在接收相同文本文件的计算机上创建新的文本文档。 所有这些我都在工作。当我使用本地主机进行测试时,它似乎在100%的时间内工作。当我把它从我的笔记本电脑发送到我的个人电脑时,它似乎100%的时间都在工作。然而,当我把它从我的电脑发送到我的笔记本电脑时

  • 我正在尝试使用UDP在服务器(在公共IP上)和客户端(通过NAT)之间进行双向通信。我的逻辑是,如果服务器向IP和它接收数据包的端口发送一些数据,客户端仍然应该得到它,因为NAT最终会有将数据包发送到客户端的映射。 客户端有 2 个进程,一个用于发送数据包,另一个进程用于接收数据。服务器继续等待数据,如果它获得数据,它会将数据发送回从接收数据的端口和 IP。 客户代码如下: client_recv

  • 我试图让一些基于PAHO的客户机使用Vert.x MQTT服务器。我试图发布到我的接收客户端订阅的测试主题。我很难从客户端发布者向客户端订阅者发送消息。 使用我在Internet上看到的真实例子,我构建了一个MQTT代理。vert.x MQTT代理代码的代码如下所示: 我很确定我在这里错过了什么,但我想不出会是什么。有人能帮我把这个弄好吗??? 提前感谢您的任何帮助或见解。

  • 我试图创建一个Unix套接字数据报示例。客户端可以流畅地发送和接收消息。在缓冲区长度小于< code>SOCKET_BUFFER_SIZE的情况下,服务器能够做到这一点,否则服务器的输出会在接收的缓冲区显示一些无效字符。 客户代码 服务器的代码 头文件 这是我得到的 奇怪的是,客户端收到了预期的消息,尽管服务器在发送之前没有正确格式化消息。 这是我的预期输出 我该如何解决?

  • 我有一个Angular 4和Java/Spring MVC/Jhipster网站,我正试图使用本教程创建一个websocket(使用sock js和stomp.js)。我可以连接到websocket,但是当我尝试从Java代码向客户端发送数据时,什么也没有发生。请帮帮我。 下面,我只是试图访问我的浏览器中的http://localhost:9001/api/websocket/testSend,并

  • 我不知道是网络配置还是我的软件出了问题。 这是监听代码: 奇怪的是,在wireshark上,我可以看到:数据包已从发送到,并且设备已对此数据包作出响应--来自的数据包已发送到。使用bind(0.0.0.0,端口)似乎不能涵盖。我迷路了,一点主意都没有。 ifconfig为: