Server client简单程序

时间:2013-06-04 20:11:14

标签: java multithreading packets

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

我有服务器,它将消息多播到订阅的客户端。

客户显然可以订阅或取消订阅。

这是套接字的服务器端代码

  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部分,但是,没有发生的情况。

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

知道我做错了什么吗?

感谢。

1 个答案:

答案 0 :(得分: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" );
}