2011-10-23 14 views

risposta

85

Se volete vedere la vostra dimensione del buffer nel terminale, è possibile dare un'occhiata a:

  • /proc/sys/net/ipv4/tcp_rmem (per la lettura)
  • /proc/sys/net/ipv4/tcp_wmem (per la scrittura)

Contengono tre numeri , che sono i valori minimi, predefiniti e massimi della memoria (in byte), rispettivamente.

+11

C'è anche '/ proc/sys/net/core/rmem_default' per recv e'/proc/sys/net/core/wmem_default' per l'invio, come indicato http://man7.org/linux/man- pages/man7/socket.7.html –

26

Per ottenere la dimensione del buffer in C/C++ programma che segue è il flusso

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 
+0

È sicuro chiamare invece 'socket (AF_INET, SOCK_STREAM, IPPROTO_TCP) '? Sto usando questa chiamata C nel mio framework Swift TCP per ottenere la dimensione del buffer per ridurre le chiamate 'recv'. – DevAndArtist

+0

Nota: questa è anche solo la dimensione del buffer di lettura, utilizzare SO_SNDBUF per ottenere la dimensione del buffer di scrittura. Sotto almeno linux, puoi usare ioctl SIOCINQ e SIOCOUTQ, per ottenere rispettosamente lo stato corrente usato del buffer. – Rahly

-5

dimensione atomica è 4096 byte, formato massimo è 65536 byte. Sendfile utilizza 16 pipe ciascuna di 4096 byte di dimensione. cmd: ioctl (fd, FIONREAD, & buff_size).

+2

Che cosa significa "dimensione atomica"? cosa c'entra "sendfile()" con esso; e dove hai risposto alla domanda sulla dimensione del buffer del socket di default? – EJP

+0

@ EJP Dimensione atomica - Assi interni Linux per trasferimento socket 4096b - MT-safe, mutex, pipe interne 1/16. il sandfile ha molto a che fare con questo. Penso di avere. La dimensione del buffer predefinita è 16 * 4096b. –

+0

Nessuno di questi risponde alla domanda. Riguarda il socket invia e riceve le dimensioni del buffer. Non riguardo 'sendfile()', che quindi non ha * niente * a che fare con esso, né nemmeno le dimensioni di trasferimento atomico, idem. – EJP

Problemi correlati