簡體   English   中英

Java線程和數據報套接字接收

[英]java thread and datagram socket receiving

我對數據報套接字和線程都是新手。 當我在命令提示符下運行代碼時,我期望看到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();
      }
}

您需要從run()方法而不是構造函數中調用receive()

看起來您是在構造函數中收到的,而不是在run方法中收到的。 所以第一個是阻塞。 第二永遠不會開始。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM