sendto(..)
UDPポートとして開いたソケットの呼び出しに渡すことができる最大バイト数をどのように取得しますか?sendtoの最大バッファ長は?
答えて
UDPは接続指向ではないので、2つのパケットが一緒に属していることを示す方法はありません。その結果、単一のIPパケット(65535)の最大サイズによって制限されます。 IPパケットのサイズには、IPヘッダー(通常20バイト)とUDPヘッダー(8バイト)も含まれているため、送信できるデータは多少少なくなります。
このIPパケットは、より小さいパケット(例えば、イーサネットでは〜1500バイト)に収まるように断片化することができます。
私はこれをさらに制限するOSは認識していません。
getsockopt()を使用してください。 This siteには、使用法や検索可能なオプションの内訳があります。
Windowsでは、あなたが行うことができます:Linuxの場合
int optlen = sizeof(int); int optval; getsockopt(socket, SOL_SOCKET, SO_MAX_MSG_SIZE, (int *)&optval, &optlen);
、UDPのmanページによると、MTUディスカバリを使用するカーネルは(それが最大UDPパケットサイズは、ここと宛先の間にあるかどうか確認します、それを選ぶ)、またはMTUディスカバリーがオフの場合は、最大サイズをインターフェースMTUに設定し、それより大きなものをフラグメント化します。イーサネットを介して送信している場合、一般的なMTUは1500バイトです。
Mac OS Xでは、送信(SO_SNDBUF)と受信(SO_RCVBUF)に異なる値があります。 これは、送信バッファ(男性用のgetsockopt)のサイズである:
のgetsockopt(靴下、SOL_SOCKET、SO_SNDBUF、(int型*)&はoptval、optlen &)。
大きなメッセージ(ローカルループバック経由で送信されたUDP上のLeopard 9216オクテット)を送信しようとすると、「Message too long/EMSGSIZE」になります。
- 1. 長いテキストフィールドの最大長
- 2. SteamID64の最小長と最大長
- 3. オラクルナンバーフォーマットモデル最大長
- 4. JAVA_TOOL_OPTIONS最大長
- 5. Android:URLの最大長
- 6. UITextViewの最大長
- 7. スカラキューの最大長
- 8. openIDの最大長
- 9. SAS長さが最大長
- 10. Nativescript TextField最大長
- 11. 最長リピートシーケンスではなく最大リピートシーケンス
- 12. URLの最大長(C#の)
- 13. [NSXMLNode stringValue]の最大長
- 14. URLフラグメント(ハッシュ)の最大長
- 15. node.jsの最大リクエスト長
- 16. MongoDB。フィールド名の最大長
- 17. UUIDの最大文字長
- 18. 最大の長方形
- 19. SQL CEの最大長
- 20. 最大長のDjango CharField
- 21. Ajax URLの最大長を
- 22. ** argvパラメータの最大長
- 23. Windowsユーザー名の最大長
- 24. 最大MySQLユーザーパスワードの長さ
- 25. ベクトルの最大長がR
- 26. Alexa skill SSMLの最大長
- 27. Grails JSONの最大長
- 28. VARCHARのデフォルトと最大長
- 29. シードデータベースの設定最大長
- 30. Elasticsearchフィールド名の最大長