LINUX.ORG.RU

Надо отправить одинаковые данные на несколько сокетов


0

0

Вроде бы где-то встречал упоминание, но ника не могу вспомнить
Поиск ничего не дал
наверное просто не знаю как сформулировать правильно запрос :(
вопрос собственно такой
Есть кусок данных, лежит в буфере
и его надо разослать на несколько сокетов
есть ли возможность сделать это одним вызовом?


> есть ли возможность сделать это одним вызовом?

да:

my_amazing_one_funccall(data, len, sockets, SOCKS_NUM);

void my_amazing_one_funccall(char *data, size_t len, int *sockets, int sn)
{
int i;

for(i = 0; i < sn; i++)
write(sockets[i], data, len); /* error checking was ommited... */
}

asgard
()
Ответ на: комментарий от asgard

> my_amazing_one_funccall(data, len, sockets, SOCKS_NUM);

khm... ну если опустить прилагательное "системным" то по всей видимости без проблем :) но AFAIU вопрос стоял все-таки о системном вызове. в противном случае, его и задавать то было бы как-то уж совсем глупо.

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от klalafuda

> khm... ну если опустить прилагательное "системным" то по всей видимости без проблем :) но AFAIU вопрос стоял все-таки о системном вызове. в противном случае, его и задавать то было бы как-то уж совсем глупо.

вообще-то это был сарказм в сторону очень расплывчатого описания.

btw: а сискол никто не мешает добавить. а далее распространять своё приложение вместе с патчем к ядру. =)

asgard
()
Ответ на: комментарий от asgard

> btw: а сискол никто не мешает добавить. а далее распространять своё приложение вместе с патчем к ядру. =)

сарказм крепчает:)

dilmah ★★★★★
()
Ответ на: комментарий от klalafuda

именно
речь идет о системном вызове
наверняка что то подобное есть
такой вызов позволит избежать многократного копирования данных из user в system
подобное или близко к этому используется при передачи данных из одного файла в другой
sendfile(2), splice(2), tee(2)

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