java - 服务器客户端简单程序

标签 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然而,部分没有任何反应。

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

知道我做错了什么吗?

谢谢。

最佳答案

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

关于java - 服务器客户端简单程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16926610/

相关文章:

python - 如何使用 Python 并行读取/处理大文件

java - 在 1 个 UDP 数据报中发送多个数据

java - 更改 tcp/ip 数据包 c++ 或 java

c# - 当我通过 tcp 发送一个数据包时,它被分成两个数据包

java - 尝试加载类时出现 NoClassDefFoundError

java - 使用 J2EE 创建强大且可扩展的电子商务解决方案/Web 应用程序

java - 任务完成后如何在java中销毁线程

c# - 移动/调整窗口大小时任务被阻止

java - 如何打印字符数组中的字符而不重复?

java - 如何在我的java项目中实现单点登录?