получение потока Java и сокета дейтаграммы - PullRequest
0 голосов
/ 23 ноября 2011

Я новичок как в дейтаграммах, так и в потоках.Когда я запускал код в моей командной строке, я ожидал увидеть распечатки как 6500, так и 6501, но увидел только 6500. Почему код не запускает второй запуск ()?Как мне связать несколько принимающих сокетов дейтаграмм (самый простой, не обязательно лучший)?

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 ]

1 голос
/ 23 ноября 2011

Вам нужно вызвать receive() из метода run(), а не из конструктора.

0 голосов
/ 23 ноября 2011

Похоже, вы получаете в конструкторе, а не метод запуска. Итак, первый блокирует. Второе никогда не начинается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...