Как найти размер буфера сокета linux


каков размер буфера сокета по умолчанию в linux? Есть ли какая-нибудь команда, чтобы увидеть его?

3   51   2011-10-23 12:05:42

3 ответа:

Если вы хотите увидеть размер буфера в терминале, вы можете взглянуть на:

  • /proc/sys/net/ipv4/tcp_rmem (для чтения)
  • /proc/sys/net/ipv4/tcp_wmem (для записи)

Они содержат три числа, которые являются минимальными, значениями по умолчанию и максимальными значениями объема памяти (в байтах) соответственно.

для получения размера буфера в программе c / c++ ниже приведен поток

int n;
unsigned int m = sizeof(n);
int fdsocket;
fdsocket = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP); // example
getsockopt(fdsocket,SOL_SOCKET,SO_RCVBUF,(void *)&n, &m);
// now the variable n will have the socket size

атомарный размер 4096 байт, максимальный размер 65536 байт. Sendfile использует 16 каналов каждый размером 4096 байт. cmd: ioctl(fd, FIONREAD, &buff_size).