Может ли сервер отправить сообщение клиенту, используя TCP? - PullRequest
0 голосов
/ 31 октября 2018

Раньше я делал только HTML / HTTP и делал несколько веб-сокетов на нашем сайте, теперь мне поручено задание, что будут клиент и сервер, и клиент подключится к IP-адресу сервера, а сервер отправит некоторые команды клиенту. .

Я изначально думал использовать HTTP и websocket для выполнения этой задачи, но кто-то сказал мне, что я должен использовать TCP вместо HTTP / websocket.

Поскольку я понятия не имею о TCP, скажите, пожалуйста, способен ли TCP только к этой задаче?

1 Ответ

0 голосов
/ 01 ноября 2018

Если у вас есть пользовательский клиент (например, не веб-приложение в браузере), он может установить простое TCP-подключение к вашему серверу, если захочет. Но для каждой передачи по TCP нужен какой-то формат данных, который используют обе стороны (обычно называемый «протоколом»), поэтому обычно проще использовать существующий протокол, а не изобретать его заново. Такие вещи, как HTTP, webSocket, FTP и т. Д. - это протоколы, которые определяют действия, которые необходимо выполнить, и форматы данных.

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

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

Я изначально думал использовать HTTP и websocket для выполнения этой задачи, но кто-то сказал мне, что я должен использовать TCP вместо HTTP / websocket.

Вы спросили их, почему они так говорили? HTTP чрезвычайно универсален и прост в использовании, но это протокол запроса / ответа (клиент A отправляет запрос, а сервер B предоставляет ответ, а затем соединение устанавливается). Это прекрасно работает для некоторых типов вещей, но не очень хорошо для других типов вещей.

webSocket фактически запускается через HTTP, а затем переключает протоколы в формат фрейма данных webSocket и представляет собой постоянное соединение, которое может быть долговечным и может отправлять данные в обоих направлениях. Например, клиент может подключиться к серверу через webSocket, а затем служба может отправлять обновления котировок акций каждые несколько секунд по мере их поступления на сервер. Клиент просто сидел и слушал обновления для поступления.

Поскольку я понятия не имею о TCP, скажите, пожалуйста, способен ли TCP только к этой задаче?

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

...