Отправить несколько дейтаграмм с помощью одного вызова send ()? - PullRequest
3 голосов
/ 10 марта 2009

Когда основанный на дейтаграмме сокет (необработанный сокет или UDP) используется с отправкой в ​​стиле сбора, все данные объединяются для формирования одного IP-пакета. Можно ли отправить несколько дейтаграмм одним вызовом?

Ответы [ 3 ]

2 голосов
/ 01 марта 2010

Звонок, который вы ищете, это sendmmsg(), однако он еще не реализован или даже не подлежит обсуждению. Вы можете видеть, что это сторона приема twin recvmmsg() в последнем 2.6.3 ядре Linux.

0 голосов
/ 26 мая 2009

То, что вы спрашиваете, немного забавно, так как send () в стиле слияния, как следует из названия, собирает данные из нескольких мест в памяти и объединяет их в один буфер, который затем отправляет.

Таким образом, у вас есть несколько частей данных, которые вы хотите отправить несколько дейтаграмм. Почему бы вам не отправить их с отдельными звонками для отправки?

На самом деле вы можете вызвать connect () на сокете дейтаграммы, чтобы указать цель по умолчанию, чтобы вы могли отправлять () или write () без указания адреса назначения каждый раз.

0 голосов
/ 10 марта 2009

Я так не думаю ... Как вы могли бы ожидать, что стек IP будет выводить, где вы предполагаете, что пакетная датаграмма будет?

...