2016-12-15 30 views
1

我有以下UDP客户端和服务器类,并且我试图从UDPClient向本地主机和端口上的相同java项目中的另一个类“UDPServer”发送一些字符串7777.我面临的问题是,我没有从UDPClient类的UDPServer类中收到任何内容。有没有人有问题的地方?UDPServer未收到来自UDPClient的发送数据

我感谢任何帮助!

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

UDPServer

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

数据报服务器上的任何异常? – thepaulo

+0

@Sonor否我没有收到任何错误或任何异常。 – water

+0

代码似乎在我的机器上按预期工作 – scsere

回答

1

嗨尝试检查什么毛病端口分配,因为你的代码工作正常。

启动服务器,并运行此命令:

的Windows

netstat -aon | FINDSTR 7777 

的Linux:

netstat -aon | grep 7777 

您应该看到PID检查,如果pid是一样UDPServer上运行。另外检查防火墙也许有什么问题吗?

+0

如果你可以控制你的防火墙,暂时禁用整个防火墙。如果解决了您的问题,则需要为所有服务器接收传入数据创建防火墙规则。客户端应该能够通过防火墙发送数据而没有任何问题。 – zooropa

相关问题