Java ServerSocket Несколько экземпляров прослушивания - PullRequest
1 голос
/ 16 мая 2010

У меня есть Java-приложение, которое использует сокеты для общения друг с другом.

проблема в том, что когда я выполняю прослушивание сокета (сервер), я могу запустить другой экземпляр игры на том же компьютере, используя тот же порт, что и раньше, чтобы прослушивать, и это приводит к повторному прослушиванию. Теперь у меня есть два экземпляра приложения, которые слушают через один и тот же порт. вы можете представить только одно соединение, когда соединение происходит.

вопрос: как я могу запретить приложению прослушивать тот же порт, что другой экземпляр уже прослушивает?

Заранее спасибо.

РЕДАКТИРОВАТЬ: serverSocket = new ServerSocket(serverPort, backlog); Я использую это. я должен попытаться использовать: ServerSocket(int port, int backlog, InetAddress bindAddr) вместо?

РЕДАКТИРОВАТЬ: РЕШЕНО! я не обработал исключение, только поймал его в ловушку. сейчас это работает хорошо. спасибо за ваш вклад.

Ответы [ 2 ]

1 голос
/ 16 мая 2010

Невозможно для двух приложений прослушивать один и тот же порт с одинаковым IP. Второе приложение получит исключение «порт уже используется».

0 голосов
/ 16 мая 2010

Только один процесс ОС может иметь сокет сервера, открытый на конкретном порту. Язык, используемый для реализации процесса, не имеет значения; это ограничение адресации сокета TCP.

(ОК, это не совсем верно, когда вы начинаете возиться с привязкой адресов к сокетам. Но это очень хорошее первое приближение; способы, которыми это не так, как правило, не очень полезны для общих программ.)

...