LINUX.ORG.RU

про udp-сокеты


0

0

Сабж :). Никак не могу понять. Вот с tcp понятно, сколько данных за раз уйдёт одному богу известно, а в UDP? UDP вообще атомарная штука или инфа может придти в двух разных пакетах? Что будет если UDP-пакет больше чем входной буффер сокета?

anonymous

>>UDP вообще атомарная штука или инфа может придти в двух разных пакетах?

если размер отсылаемых данных > MTU

man 7 udp

alex_custov ★★★★★
()

> Сабж :). Никак не могу понять. Вот с tcp понятно, сколько данных за раз уйдёт одному богу известно, а в UDP? UDP вообще атомарная штука или инфа может придти в двух разных пакетах? Что будет если UDP-пакет больше чем входной буффер сокета?

в разных пакетах какого уровня - UDP или IP?

// wbr

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

UDP. Я имею в виду может ли recv вернуть часть UDP-пакета? Т.е. может быть такое что отправился пакет за один системный вызов а прочитался за два?

Не совсем пойму фразу из мана "is bigger the packet is truncated and the MSG_TRUNC flag is set." Получается что пакет может дойти не целиком??

anonymous
()

проведи эксперимент :))

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

а ты бы всю фразу прочёл, а не кусок. особенно слова «passed buffer».

When the packet is smaller than the passed buffer only that much data is returned, when it is bigger the packet is truncated and the MSG_TRUNC flag is set.

и ещё:

By default Linux UDP does path MTU (Maximum Transmission Unit) discovery. This means the kernel will keep track of the MTU to a specific target IP address and return EMSGSIZE when a UDP packet write exceeds it. When this happens the application should decrease the packet size.

какие именно буквы из мана вызвали недоумение?

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

да вроде всё понятно, просто я не так себе представлял работу UDP, поэтому вот и решил уточнить.

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