@MelancholicTheDie
PHP Developer

NodeJS Как сделать сокеты блокируемыми?

Добрый день.

Для общения клиента с сервером использую библиотеку net. Клиент написан на С++ и использует обычные системные сокеты.
Передаю клиенту множество данных, в виде порций. Заметил, что сервер не дожидается момента, когда клиент получит данные и сразу же отправляет следующий пакет. Из-за этого клиент не обрабатывает задуманную порцию, а соединяет некоторые порции вместе.
Перед мной стал вопрос:
Как добиться того, что бы сервер ждал момента - когда пакет дойдет клиенту, и только тогда отправлять следующий пакет.
Прочитал немного про специфику сокетов, узнал что сокеты могут быть блокируемыми и не блокируемыми. То бишь на нативном уровне есть вроде флага TCP_NO_WAIT, который говорит о том, что не нужно ждать ответа о доставки данных, из-за чего не дожидаясь сразу отправляет следующую порцию.

Так вот, как сделать сокет блокируемым? Чтоб он дожидался ответа о доставки и только тогда отправлял следующий пакет.
  • Вопрос задан
  • 243 просмотра
Решения вопроса 1
begemot_sun
@begemot_sun
Программист в душе.
> Из-за этого клиент не обрабатывает задуманную порцию, а соединяет некоторые порции вместе.
У вас проблема на клиенте. Сокет это такая труба в которую вталкиваются байтики с одной стороны, и выталкиваются с другой. Если ваш клиент неспособен различить 2 пакета в потоке байтиков, то это плохой клиент.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 16:53
1000 руб./за проект
19 апр. 2024, в 16:45
5000 руб./за проект
19 апр. 2024, в 16:22
30000 руб./за проект