Unix Stream Socket recv () Возврат меньше данных в буфереLinux

Ответить
Anonymous
 Unix Stream Socket recv () Возврат меньше данных в буфере

Сообщение Anonymous »

Я создаю сокет потока Unix для IPC < /p>

Код: Выделить всё

fd = socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC, 0)
отправитель Отправить 97 байт один раз и без ограничения скорости.

Код: Выделить всё

while (1) {
ret = send(fd, buf, 97, MSG_NOSIGNAL);
}
приемник recv 128k один раз, но спит 1 секунду для каждого получения.

Код: Выделить всё

while (1) {
sleep(1);

ioctl(fd, SIOCINQ, &v);
printf("not read %d bytes\n", v);

ret = recv(cli, buf, 128 * 1024, 0);
printf("rx %d bytes\n", ret);
}
< /code>
отправитель и приемник находятся на одном хосте. Странно происходит.
recv return 22k 
только один раз, намного меньше, чем размер буфера RX по умолчанию 212K

Код: Выделить всё

recv buffer size 212992
send buffer size 212992
not read 212992 bytes
rx 34532 bytes
not read 212992 bytes
rx 26966 bytes
может кто -нибудь объяснить это, не задокументировано ни в одном руководстве Linux.

Подробнее здесь: https://stackoverflow.com/questions/796 ... -in-buffer
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»