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
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.