2013-06-04 211 views
1

所以我尝试创建一个简单的服务器客户端应用程序。服务器客户端简单程序

我有服务器,哪些多播消息给订阅的客户端。

客户可以明显地订阅或取消订阅。

这里是插座

try // create DatagramSocket for sending and receiving packets 
    { 
    socket = new DatagramSocket(6666); 
    } // end try 
    catch (SocketException socketException) 
    { 
    System.exit(1); 
    } // end catch 

服务器端的代码,我也创建了等待进入的口袋

 while(true) 
     { 
      try // receive packet, display contents, return copy to client 
      { 
       byte[] data = new byte[ 100 ]; // set up packet 
       DatagramPacket receivePacket = 
        new DatagramPacket(data, data.length); 

       socket.receive(receivePacket); // wait to receive packet 

       String Message = receivePacket.getData().toString(); 
......... 

这里一个线程客户端

try { 
     socket = new DatagramSocket(); 
    } catch (SocketException ex) { 
     displayArea.append(ex + "\n"); 
    } 

我在这里尝试发送数据包

 byte[] data = message.getBytes(); // convert to bytes 

     try { 
      // create sendPacket 
      DatagramPacket sendPacket = new DatagramPacket(data, 
       data.length, InetAddress.getLocalHost(), 6666); 
     } catch (UnknownHostException ex) { 
      displayArea.append(ex + "\n"); 
     } 

嗯,问题是我不认为数据包到达服务器,我知道线程正在等待数据包,我可以在调试中看到它确实到达了socket.receive部分,但是没有任何反应。

我在同一台计算机上使用客户端和服务器。

任何想法我做错了什么?

谢谢。

+0

我会使用数据包嗅探器来查看数据包是否在您的盒子上收到。 Wireshark,tcpdump等。 – Gray

+0

小心:Windows上的Wireshark无法观察环回 – Aubin

回答

0
byte[] data = message.getBytes(); // convert to bytes 
try { 
    DatagramPacket sendPacket = 
     new DatagramPacket(data, data.length, InetAddress.getLocalHost(), 6666); 

    socket.send(sendPacket); //<<<<<<<<<<<<<<<<<<< REQUIRED 

} 
catch(UnknownHostException ex) { 
    displayArea.append(ex + "\n"); 
} 
+0

谢谢,我的包... –