2012-03-20 5 views
0

Можно ли запросить количество байтов в буфере отправки сокета в Linux? Я хотел бы иметь возможность запросить SO_SNDBUF с getsockopt, чтобы получить размер буфера, а затем [вставить технику здесь], чтобы получить фактическое использование, которое даст мне знать, насколько я заполняю буфер.Использование буфера отправки запросов в сокете в linux

ответ

1

Это не то, что SO_SNDBUF. SO_SNDBUFустанавливает или получает максимальный буфер отправки сокета в байтах (с указанием socket(7)). Вероятно, вы можете использовать SIOCOUTQ или TIOCOUTQ ioctls, если используете tcp или udp.

Однако маловероятно, что это правильный подход. Считаете ли вы, что механизм select-like уведомляет вас, когда сокет доступен для записи? В сочетании с неблокирующим поведением это может быть билетом на чистый подход.

+0

Извините, если я не был на 100% ясен, я хочу использовать SO_SNDBUF, чтобы получить общий размер буфера при создании сокета, а затем следить за тем, сколько из них фактически используется в _ в любое время. Это относится к типу приложения очереди сообщений, и я хочу следить за тем, чтобы моя очередь не медленно заполнялась из-за медленного чтения. Я думаю, что SIOCOUTQ - именно то, что мне нужно. –

Смежные вопросы