java线程和数据报套接字接收

时间:2011-11-23 00:32:04

标签: java multithreading sockets

我是数据报套接字和线程的新手。当我在命令提示符下运行代码时,我希望看到6500和6501都打印出来但只看到6500.为什么代码没有运行第二个start()?如何连接多个接收数据报套接字(最简单的方法,不一定是最佳方式)?

public class startThread {
public static void main(String[] args) throws Exception, IOException {
    new routerInterface(6500, "receive").start();
    new routerInterface(6501, "receive").start();
}
}

public routerInterface(int virPort, String action) throws Exception{
    System.out.println(virPort);
    if (action.compareTo("receive")==0){
        request = new DatagramSocket(clientPort);
        receive();
    }
}

public static void receive() throws Exception{
      while(true) { 
          System.out.println("We are recieving here");
          DatagramPacket p = new DatagramPacket(udpPack, udpPack.length);  
          request.receive(p);
          byte[] reciv = p.getData();
      }
}

2 个答案:

答案 0 :(得分:1)

您需要从receive()方法调用run(),而不是从构造函数调用。{/ p>

答案 1 :(得分:0)

看起来你在构造函数而不是run方法中收到。所以第一个就是阻止。第二个永远不会开始。