2010-05-05 9 views
8

Come aumentare la finestra di ricezione TCP per un socket specifico? - So come farlo per tutti i socket impostando la chiave di registro TcpWindowSize, ma come farlo per uno specifico?Aumentare la finestra di ricezione TCP per una presa specifica

Secondo MSFT's documents, il modo in cui è

chiamata Windows Sockets funzionano setsockopt, che imposta la ricezione finestra su una base per-socket.

Ma in setsockopt, essa viene menzionata in merito SO_RCVBUF:

Specifica buffer spazio totale a socket riservati per riceve. Questo è non correlato a SO_MAX_MSG_SIZE e fa non corrisponde necessariamente alla dimensione della finestra di ricezione TCP.

Quindi è possibile? Come?

Grazie.

risposta

5

SO_MAX_MSG_SIZE è per UDP. Ecco da MSDN:

SO_MAX_MSG_SIZE - Restituisce la dimensione massima dei messaggi in uscita per i socket orientati ai messaggi supportati dal protocollo. Non ha significato per socket orientati al flusso.

È anche non impostabile.

Per TCP, utilizzare solo SO_(SND|RCV)BUF.

1

Sono abbastanza sicuro che SO_RCVBUF è ciò che desideri. Il primo link dice che SO_RCVBUF ha la massima priorità per determinare la dimensione della finestra TCP rispetto a qualsiasi cosa impostata sul sistema. Dal modo in cui sto leggendo, penso che tutta la seconda parte stia dicendo che la dimensione SO_RCVBUF non deve corrispondere alle dimensioni della finestra di ricezione del sistema. In altre parole, può essere una dimensione diversa impostata.

+0

Grazie. E c'è un modo per impostare SO_MAX_MSG_SIZE? – rkellerm

0

È necessario eseguire un'accurata messa a punto e testare i risultati. Windows Vista e versioni successive dispongono di una funzione di ottimizzazione automatica della dimensione adattiva della finestra che ottimizza specificamente le dimensioni della finestra per funzionare bene sia su reti LAN che su reti di lunga durata come reti 3G e ad alta perdita. L'impostazione della dimensione della finestra sarà annullata in modo che le finestre non possano più regolare automaticamente le dimensioni della finestra. Questo potrebbe danneggiare le tue prestazioni nel caso avessi bisogno di correre su una rete particolarmente latente come una rete cellulare.

Problemi correlati