このパラメータの背後にあるアイデアは本当にありませんでした。私はまた、WinSock2ではこのパラメータが無視されていることに気付きました。なぜですか? Unixシステムはこのパラメータを使用しますか、それとも無視しますか?ソケットプログラミングでselect()の "nfds"パラメータ
1
A
答えて
3
Windowsのselect()の実装はリンクされたリストを内部的に使用するため、何にでもnfdsパラメータを使用する必要はありません。
しかし、他のOSでは、fd_set
構造体は、ビット配列(ソケットあたり1ビット)を保持するように実装されています。
typedef struct fd_set {
__int32_t fds_bits[__DARWIN_howmany(__DARWIN_FD_SETSIZE, __DARWIN_NFDBITS)];
} fd_set;
...と正しいことを行うためには、select()の呼び出しがあります。たとえば、ここでのMacOS/Xの下で(SYS/_TYPES/_fd_def.hで)それが宣言されている方法です配列内のビットをループして、それらの内容を確認します。 nfds
パラメータでselect()を指定すると、すべての呼び出しで配列全体を常に反復処理する必要はなく、配列の最初の(nfds)ビットを反復処理するだけでよいことをselect()実装に伝えます。これにより、select()が他の方法より効率的になります。
関連する問題
- 1. ソケットプログラミングでのLinux selectコール
- 2. Linuxの場合:最初のパラメータ<code>nfds</code>については
- 3. MPIでソケットプログラミングのselect()と同等のものは何ですか?
- 4. ソケットプログラミングでselectとFD_SETを使用するには?
- 5. ソケットプログラミング
- 6. ソケットプログラミング
- 7. ソケットプログラミング
- 8. ソケットプログラミング
- 9. 出力パラメータPostgreSQL SELECT
- 10. 世論調査()ソケットプログラミングTCPのLinuxの複数の接続の問題
- 11. Silverlightでのソケットプログラミングの問題
- 12. イベントベースのソケットプログラミングC
- 13. Javaのソケットプログラミング:メッセージ
- 14. C++ソケットプログラミングのバイトオーダー
- 15. BlackBerryのソケットプログラミング
- 16. linuxのソケットプログラミング:send()
- 17. CソケットプログラミングのAccept()
- 18. SO_KEEPALIVEのソケットプログラミング
- 19. Linuxソケットプログラミングのデバッグ?
- 20. WCFサービスのソケットプログラミング
- 21. C:UDPソケットプログラミング
- 22. ソケットプログラミングJava
- 23. Pythonソケットプログラミング
- 24. Javaソケットプログラミング
- 25. javaソケットプログラミング
- 26. Javaソケットプログラミング
- 27. PHPソケットプログラミング
- 28. ソケットプログラミングgfortran
- 29. ソケットプログラミングandroid
- 30. cソケットプログラミング