【问题标题】:UDPServer does not receive the sent data from the UDPClientUDPServer 没有收到 UDPClient 发送的数据
【发布时间】:2016-12-15 12:55:40
【问题描述】:

我有以下 UDP 客户端和服务器类,我正尝试将一些字符串从 UDPClient 发送到本地主机和端口 7777 的同一个 java 项目中的另一个类“UDPServer”。我面临的问题是我我没有从 UDPClient 类接收 UDPServer 类中的任何内容。有谁知道问题出在哪里?

感谢您的帮助!

UDPClient

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;


class UDPClient {

    public static void main(String args[]) throws Exception {
        String aString = "Hello World";
        DatagramSocket clientSocket = new DatagramSocket();
        InetAddress IPAddress = InetAddress.getByName("localhost");
        byte[] sendData = new byte[1024];
        byte[] receiveData = new byte[1024];
        sendData = aString.getBytes();
        DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, 7777);
        clientSocket.send(sendPacket);
        DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
        clientSocket.receive(receivePacket);
        String modifiedSentence = new String(receivePacket.getData());
        System.out.println("FROM SERVER:" + modifiedSentence);
        clientSocket.close();
    }
}

UDP服务器

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;


class UDPServer {

        public static void main(String args[]) throws Exception {
            DatagramSocket serverSocket = new DatagramSocket(7777);
            byte[] receiveData = new byte[1024];
            byte[] sendData = new byte[1024];
            while (true) {
                DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
                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);
            }
        }
}

【问题讨论】:

  • 你的数据报服务器有异常吗?
  • @Sonor 不,我没有收到任何错误或异常。
  • 代码似乎在我的机器上按预期工作
  • 我看不出有什么问题
  • @scsere:你没有在代码上做任何改变吗?你用过同一个端口吗?

标签: java network-programming udp client-server


【解决方案1】:

您好,请尝试检查端口分配有什么问题,因为您的代码可以正常工作。

启动你的服务器并运行这个命令:

窗户

 netstat -aon | FINDSTR 7777

Linux:

 netstat -aon | grep 7777

您应该看到 PID 检查 pid 是否与运行 UDPServer 的相同。还要检查防火墙可能有问题吗?

【讨论】:

  • 如果您可以控制您的防火墙,请暂时禁用整个防火墙。如果这解决了您的问题,您需要创建防火墙规则以使所有服务器接收传入数据。客户端应该能够毫无问题地通过防火墙发送数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-23
  • 2016-10-17
  • 2012-01-08
  • 1970-01-01
相关资源
最近更新 更多