[Windows] アプリケーションで使用できるソケット数を増やす

気付かずにはまってしまったのでメモを残しておく。
Winsock2使用時に、アプリケーションで使用できるsocket 数を変更する方法について。
最近のLinuxやFreeBSDなどではselectで扱うfdの数はデフォルトで1024。
この数はFD_SETSIZEという定数で決まることが多い。これは単に最初にこれを使ったUNIXからの歴史的な流れだ。
Winsock2ではデフォルトが64になっている。
FD_SETSIZEを大きくしてwinsock2をインクルードすればそちらが優先される。あるいは、コンパイラオプションに定義を与えても良い。

#define FD_SETSIZE 128
#include <winsock2.h>

詳細は以下のknowledgebaseにある。(英文)
http://msdn.microsoft.com/en-us/library/ms739169%28VS.85%29.aspx
これにより、selectが対象とするsocket数が拡張される。この作業はWindowsがOSとして作ることのできるsocketの数には影響しない。

広告
%d人のブロガーが「いいね」をつけました。