Java serversocket как писать и читать в разные потоки - PullRequest
0 голосов
/ 18 февраля 2012

Я внедряю сервер, используя Java ServerSocket, и у меня подключены два клиента, каждый из разных потоков.Один отправляет сообщение на сервер, а другой читает сообщение с сервера.Они оба связываются с сервером через один и тот же порт, так как мне различить клиента, который хочет читать, и клиента, который хочет писать?Для отправки сообщения на сервер уже закрыто соединение.Точно так же клиент, который хочет получить от сервера, не собирается отправлять что-либо во входной поток сокета

Ответы [ 2 ]

0 голосов
/ 18 февраля 2012

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

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

В вашей текущей ситуации протокол тривиален, но вы можете очень скоро столкнуться с более сложными сценариями.Здесь REST-ful протокол поверх http, скорее всего, будет хорошим выбором.

0 голосов
/ 18 февраля 2012

Вы должны будете заставить клиента писать байт или строку после открытия сеанса, указывая, хочет ли он читать или писать, вы не сможете сделать это волшебным образом, если они подключаются к одному и тому же порту, если вы не можете их дифференцировать.по IP-адресу или что-то еще

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