UDP服务器来处理多个客户端

时间:2011-01-15 06:50:35

标签: 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()。但我不明白run()。我应该将整个while(true)语句放在run()中吗?那么main()呢?任何人都可以展示如何更改我的代码以处理多个请求? 感谢

2 个答案:

答案 0 :(得分:0)

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

在您的主要方法中:


UDPServer udpServer = new UDPServer();
udpServer.start();

  • 要确保没有任何激活不会破坏主循环,请记住捕获并处理while(true)循环内可能会出现的所有异常

答案 1 :(得分:0)

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

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

 }
相关问题