2016-12-21 4 views
1

Я использую boost::asio, TCP communication и C++ для создания клиента и сервера, которые говорят по телефону TCP socket. Мне нужно, чтобы клиент и сервер могли отправлять и получать данные друг другу. Я могу заставить их обмениваться данными через сокет, где сервер постоянно отправляет некоторые данные, и клиент непрерывно считывает сокет. Оно работает.boost :: asio :: tcp двусторонняя связь на сокете

Теперь другой путь общения:Для клиента отправить некоторые данные и сервер, чтобы иметь возможность читать его, могу ли я использовать тот же сокет для этого? Или мне нужно использовать отдельный сокет? Можно ли читать и писать в одном сокете для двух приложений, обменивающихся TCP?

Ускорение :: пример на основе asio, чтобы проиллюстрировать это, будет отличным, если он доступен. Но я могу найти примеры, которые касаются только односторонней связи.

+4

Что не так с примерами на странице повышения? Я бы начал с асинхронного эхо-сервера. – mkaes

+0

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

ответ

2

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

Да. TCP является полнодуплексным. Приложения определяют протокол обмена сообщениями/клиентом между клиентом и сервером. Погода они делают асинхронно или синхронно, TCP не волнует.

1

Парадигма клиентского сервера в tcp - это тот, где клиент инициирует соединение, и сервер прослушивает входящие соединения. После установления соединения tge протокол более высокого уровня, такой как http, устанавливает способ обмена данными. Что касается tcp, клиент и сервер могут отправлять или получать данные любым способом, который они выбирают. Tcp является полнодуплексным.

Смежные вопросы