bind()とaccept()を使用すると、2番目のパラメータで構造体のサイズを指定できます。しかし、私は構造体全体のサイズが渡されているのを見ただけです。なぜあなたはサイズを指定するのですか?別の番号を使用する場合はありますか?なぜstructのサイズを指定できるのですか?
1
A
答えて
0
サイズは、実装、ソケットおよび/またはプラットフォームのタイプに依存する可能性があります。だから、コールでこのサイズを渡すと、余分なフィールドやパディングが使用されていても、同じコードが異なるプラットフォームで動作します。 sockaddr
構造体の
1
サイズは、IPv4またはIPv6を使用する場合に応じて、例えば、異なる場合があります。
3
異なるソケットプロトコルファミリは、構造の異なる種類を使用しています。 IPv6アドレスではなく構造を利用するのに対し、例えば、IPv4アドレスを使用して、TCPとUDPソケットが28バイトであり、サイズは16バイトであるsockaddr_in
構造を利用します。 IPv4の、UNIX、IPv6のようなソケットアドレスの種類を、受け入れるようにオーバーロードを貧乏人の機能:
0
これは歴史的な理由によるものです。詳細は、page 68 of UNIX Network Programming: The sockets networking APIを参照してください。これらは、カーネル・モードとカーネルのアドレス空間で実行するシステムコール、であり、カーネルはそれ以外の場合はカーネルアドレス空間とユーザアドレス空間の間でコピーするデータの量を把握していないので、
1
サイズが指定されています。たとえば、IPv4またはIPv6のアドレス構造を使用しているかどうかはわかりません。
関連する問題
- 1. C言語のstructインスタンスの前に 'struct'キーワードを指定する必要があるのはなぜですか?
- 2. なぜ物理メモリのサイズを超えるヒープサイズを指定できますか?
- 3. なぜcでundefined structを使用できるのですか
- 4. なぜ `struct`の代入でエラーになるのですか?
- 5. structを使ってシリアライザを準備できないのはなぜですか?
- 6. DynamicMethodをstructインスタンスにバインドできないのはなぜですか?
- 7. Web APIでルートパラメータタイプを指定するのはなぜですか?
- 8. サイズの指定されていないビットフィールドメンバ構造のサイズはなぜ1ですか?
- 9. setClassNameでアクティビティを指定したときにインテントフィルタを指定するのはなぜですか?
- 10. なぜKotlinでvar/valループを指定できないのですか?
- 11. ルートビューで余白を指定できないのはなぜですか?
- 12. Cで関数extern structを渡すのはなぜですか?
- 13. なぜこれを不変の `struct`にすることができますか?
- 14. なぜstruct variant_sizeですか; C++ 17では未定義ですか?
- 15. `time :: Duration`のようにstructのグローバル定数を指定することはできますか?
- 16. Yahoo Image Search APIで画像サイズを指定できますか?
- 17. なぜメソッドを2回指定するのですか? - Java
- 18. なぜapp.useにパスを指定するのですか?
- 19. なぜstructのこのリストでフィールドに値を割り当てることができないのですか?
- 20. なぜボックス<trait>はボックス<struct>とサイズが異なりますか?
- 21. 印刷に適切なサイズを指定できません
- 22. スパークでパーティションのサイズを指定
- 23. Rのプロットでの軸サイズの指定
- 24. Javascriptで.lengthの後にno()を指定するのはなぜですか?
- 25. ncinfoのstructフィールドのサイズ
- 26. SpringでHttpMessageConverterを指定する必要があるのはなぜですか?
- 27. width margin-rightを指定するのが無効なのはなぜですか?
- 28. なぜマップ値はアドレス指定できませんか?
- 29. ビットマップのサイズをAndroidで指定されたサイズに減らす
- 30. Javaのレイアウトスイングのサイズを指定する
UNIXドメインソケット対tcpソケット対... – bmargulies