ソケットに書き込むことができるデータのサイズ

ソケットに書き込むことができるデータのサイズ

Linuxソケットがサポートする最大サイズを簡単に見つける方法があるかどうか疑問に思います。 (これは設定可能ですか?それではどこで?)

たとえば、Webで見つかったほとんどのソケットの例では、「Hello Socket」または他の小さな文字列を送信しますが、全体を変更すると戦争と平和ソケットに差し込むといつ壊れますか?

すべてがファイルなので、最大ファイルサイズはいくらですか?他のファイルシステムに接続するとき、ソケットはどのように調整されますか?

私はストリーミングソケットに最も興味があります。

答え1

どのタイプのソケットなのかは言っていません。

ストリームソケット

定義に応じて無制限のデータを送信できます。一度にすべてバッファリングまたは転送できない場合、または受信者がすべてのデータを一度に受信できない場合、転送はブロックされているか(ブロックソケットの場合)、部分的に書き込まれたバイト数を返すかEAGAIN(非ブロッキングソケットの場合)返されます。

データグラムソケット

これは契約によって異なります。 UDPv4はデータグラムあたり65536バイトのみをサポートします。 UDPv6はより多くをサポートします。 UNIX ドメインソケットは、より多くをサポートできます。この場合、単にメモリによって制限される可能性があります。

答え2

net.core.rmem_maxそれはnet.core.wmem_maxあなたのビジネスです。その値を確認できます。

# sysctl net.core.rmem_max

そしてそれらを

# sysctl -w net.core.rmem_max=8388608

それぞれ受信および送信時のソケットバッファサイズ。また、デフォルトは-rmem_defaultとですwmem_default

関連情報