java - 远程客户端收不到 UDP 数据包

标签 java sockets networking udp client

我有一个简单的 UDP 服务器/客户端程序,我转发了我的端口,服务器通过互联网接收和发送数据包,但是远程机器上的客户端无法接收它们,所以我想知道如何在客户端不转发端口的情况下接收数据包(如果可能的话)?如果不可能,我应该怎么做才能让客户端通过互联网接收 UDP 数据包?

客户端接收线程如下所示:

public void run(){
        DatagramSocket serverSocket = null;
        while(true){
            try {
                serverSocket = new DatagramSocket(7000+clientNumber+100);    
            } catch (SocketException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            byte[] receiveData = new byte[1024];
            DatagramPacket receiveX = new DatagramPacket(receiveData,     receiveData.length);
            try {
                serverSocket.receive(receiveX);
            } catch (IOException e) {
                System.out.println("Nepagavau paketo");
            }
            String korX = new String( receiveX.getData());
            Play.priesoX = Float.parseFloat(korX);
            serverSocket.close();

              }

最佳答案

您不需要为客户端做端口转发,NAT 会自动处理。 http://en.wikipedia.org/wiki/Network_address_translation 由于各种原因(防火墙等),您的客户端可能无法访问。

关于java - 远程客户端收不到 UDP 数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18451099/

相关文章:

linux - 使用可预测的网络接口(interface)名称

java - Netty:处理许多不同的数据包类型

java - 如何替换 Java 字符串中的一组标记?

NetBeans : How can I set the splash screen and ico image of . exe程序中的Java native 打包?

c# - C#套接字(TCP和UDP)

c++ - 从字符串中提取多个子字符串

java - @Mock 和@InjectMock 用例

java - 如何将一个 Eclipse 项目作为库导入到另一个项目中?

c - 套接字连接突然关闭,代码为 141

c++ - LibNet 读取 ARP 响应?