LINUX.ORG.RU

Сетевое программирование


0

0
Здравствуйте! Как сделать так чтобы команда send отправила весь буфер или не отправила ничего. Хотел это сделать через setsockopt(fd, SOL_SOCKET, SO_SNDLOWAT,...) но SO_SNDLOWAT в linux не поддерживается, а усложнять программу организовывая свой буфер отправки неохота. Вот так.
★
Отправляй с помощью write(2), проверяй число посланных байт и смещай указатель в буфере на данное число байт и так пока не отправишь всё.
Reset ★★★★★
()
Ответ на: комментарий от Reset
>Отправляй с помощью write(2), проверяй число посланных байт и смещай указатель в буфере на данное число байт и так пока не отправишь всё.

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

Devix ★
() автор топика
Ответ на: комментарий от Devix
Было бы вобще шикарно если бы я мог узнать сколько свободного места есть в буфере отправки.
Devix ★
() автор топика
Используй UDP, раз уж твоя задача допускает потери пакетов.
anonymous
()
тогда уж пусть сразу юзает RTP
anonymous
()
Ответ на: комментарий от true_admin
> если оно залезло в буфер то это не значит что оно сразу же отправилось

Это я знаю. А за советы всем спасибо.

Devix ★
() автор топика
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.