有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

用于处理多个客户端的java UDP服务器

我创建了一个UDP服务器。这是一具骷髅

public class UDPserver {
      public static void main(String[] args) throws Exception{
           while(true){
              .... some code ...
              packet = new DatagramPacket ( data , data.length, packet.getAddress(), packet.getPort() );
              .... some code ...
              socket.receive( ... );
           }
      }
}

现在,我想让它处理多个请求,所以我检查了我必须实现Runnable

public class UDPserver implements Runnable { }

我读到我还需要跑步()。但我不明白run()。我应该把整个while(true)语句放在run()中吗?main()呢?有人能告诉我如何修改上面的代码来处理多个请求吗? 谢谢


共 (2) 个答案

  1. # 1 楼答案

    您还可以为每个新连接使用新线程来执行。例如:

     class PacketPerforming extends Thread {
     DatagramPacket pak; 
     PacketPerforming(DatagramPacket pak) {
      super();
      this.pak = pak;
     } 
    
     public void run() {
      // do somethoing with pak
     }
    
     }
    
     // in your server thread
     while (true) { // i prefered wirte for (;;)
    
      DatagramPacket pak; // take pak object form remote socket
    
      PacketPerforming perform = new PacketPerforming(pak);
      perform.start();
    
     }
    
  2. # 2 楼答案

    将所有代码移到UDPServer的run方法中(包括while(true))

    在你的主要方法中:

    
    UDPServer udpServer = new UDPServer();
    udpServer.start();
    
    
    • 为了确保没有例外不会破坏主循环,请记住捕获并处理while(true)循环中可能出现的所有异常