Передача объектов сокетов между процессами, TCP, Java - PullRequest
1 голос
/ 30 сентября 2011

Хорошо, я обнаружил, что сокеты не сериализуемы ... поэтому я не могу передать их через TCP ...

Моя проблема в том, что у меня есть домашнее задание, где у меня есть 10 серверов, которые должны прослушивать один сокет (давайте назовем его запрос). Для ввода из любого числа клиентов x, которые пишут в этот сокет. Затем, после того, как один из процессов сервера прочитает сообщение из запроса, он должен связаться с этим клиентом через собственный сокет ...

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

Какие-нибудь советы, как мне это сделать? Наличие TCP не 1-1 действительно играет со мной здесь.

Ответы [ 2 ]

3 голосов
/ 30 сентября 2011

Передача сокета по TCP-соединению - это все равно что пытаться передать телефон по телефонному звонку или отправить факс на ваш факсимильный аппарат.Что вам нужно сделать, это организовать другое соединение между заинтересованными сторонами.

РЕДАКТИРОВАТЬ: На самом деле ваше назначение, как указано, даже не имеет смысла:

У меня есть 10 серверов, которые должны прослушивать один сокет (давайте назовем это запросом).

Это даже неверная терминология.Серверы прослушивают порты, а не сокеты, и 10 серверов прослушивают один порт невозможно.Каждый из них должен иметь свой собственный порт.

Для ввода от любого числа клиентов x, которые пишут в этот сокет.

См. Выше.Клиенты не пишут в «этот сокет».Они создают свой собственный сокет, который подключен к порту сервера, и пишут в него.

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

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

Короче говоря, у вас есть серьезная проблема с терминологией, но у вас нет проблем с программным обеспечением вообще.1027 *

0 голосов
/ 30 сентября 2011

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

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