Это возможно с сокетами? - PullRequest
0 голосов
/ 25 марта 2012

У меня есть два потока, взаимодействующих через DatagramSockets. Теперь я хотел бы, чтобы третий поток мог слушать общение. После прочтения Вещание нескольким получателям кажется, что две MulticastSockets в третьем потоке - это то, что я ищу.

Однако я получаю сообщение об ошибке «java.net.BindException: Адрес уже используется: невозможно связать» при попытке привязать MulticastSockets к тем же портам, которые DatagramSockets используют в первых двух потоках.

Ответы [ 3 ]

1 голос
/ 26 марта 2012

С помощью некоторых ответов и комментариев я решил это, выполнив следующее.

Я изменил 2 исходных потока, чтобы использовать сокеты Multicast для связи, и третий поток теперь имеет 2 сокета Mulitcast, привязанных к этим портам, чтобы он мог прослушивать связь.Вероятно, не самое красивое решение, но оно будет достаточно для моих нужд

0 голосов
/ 25 марта 2012

У вас два потока в одной программе, общающихся через сокет?Как насчет создания очереди для них, чтобы она просто находилась в процессе связи?

0 голосов
/ 25 марта 2012

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

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