Запуск связи между сервером и клиентом - PullRequest
2 голосов
/ 19 января 2012

Когда клиент хочет установить соединение с сервером, должно ли общение всегда начинаться с клиента?

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

Ответы [ 4 ]

3 голосов
/ 19 января 2012

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

SERVER:

int port = 3456;
ServerSocket server = new ServerSocket(port);
Socket socket;
socket = server.accept();
socket.getOutputStream().write(10);

CLIENT:

Socket socket = new Socket("server", 3456);
socket.getInputStream().read()

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

2 голосов
/ 19 января 2012

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

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

ВыКроме того, у меня есть брандмауэры и другие меры защиты сети, которые обычно разрешают устанавливать соединения только от клиентов к серверам.

2 голосов
/ 19 января 2012

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

0 голосов
/ 19 января 2012

Существует несколько решений для начала связи на стороне сервера:

  • Технология Push, или push-сервер, описывает стиль интернет-связи, когда запрос наданная транзакция инициируется издателем или центральным сервером.Если вы используете javascript, вы можете использовать кометную технологию для продвижения сервера.

  • В java есть еще один вариант, которым можно воспользоваться, это коммуникация на основе сообщений, когда сервер отправляет сообщения JMS, а клиенты могут обрабатывать

  • Если вы используете многоадресную передачу UDP, то можно достичь того же, что и с JMS, но на один уровень ниже (также поддерживается в Java)

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