SOCKETの値について

[戻る]
TERA 2006/06/30(金) 15:50:26
開発環境 WindowsXP  VC2005 SDK C言語

WinSockをつかったプログラムを作っています。
socket()を呼び出すとSOKET型の値が返ってきますが、
これはどんな場合でもプログラム内でただ1つのユニークな値なのでしょうか?

例えば、1つのパソコンで同じクライアントソフトを10個起動して、
サーバーに接続した場合、サーバー側のプログラムでは、
必ずクライアントソフト10個すべてにユニークな値が割り当てられるんでしょうか。


また、クライアントソフトとサーバーソフトを作ってるんですが、
クライアントがサーバーに接続したときに作成されるSOKETの値には
だいたい3700〜3800あたりの値が入っています。
作成されるソケット数には上限があるんでしょうか?


宜しくお願いいたします。

επιστημη 2006/06/30(金) 16:36:03
> 例えば、1つのパソコンで同じクライアントソフトを10個起動して、
> サーバーに接続した場合、サーバー側のプログラムでは、
> 必ずクライアントソフト10個すべてにユニークな値が割り当てられるんでしょうか。

サーバがacceptした時点で通信用のsocketがひとつ新たに生成されます。

> また、クライアントソフトとサーバーソフトを作ってるんですが、
> クライアントがサーバーに接続したときに作成されるSOKETの値には
> だいたい3700〜3800あたりの値が入っています。
> 作成されるソケット数には上限があるんでしょうか?

まさか無限なはずがない。

TERA 2006/06/30(金) 17:01:13
επιστημηさん

いつもありがとうございます。
socketが生成されるのはaccept()を呼び出した時点だったんですね。
試したところ、10個すべて同じでした。


> まさか無限なはずがない。

そうですよね。でも上限はいったい何個なんでしょう?
socketの値をしらべると必ず3600代、3700代、3800代の値のどれかが返ってくるんです
が、じゃあつまり最低3600〜最高3899の299個しかソケットが作れないんでしょうか・・。

dairygoods 2006/06/30(金) 17:13:48
参考になりますか?
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/advanced.html#maxsockets

TERA 2006/06/30(金) 17:48:15
[[解決]]
dairygoodsさん

参考になるサイトを教えていただいて、
ありがとうございました。
要するに、1つのスレッドでは64個のソケットが限界のようですね。
それ以上の場合はスレッドを増やす必要があるようです。

επιστημηさん、dairygoodsさん どうもありがとうございました。

dairygoods 2006/06/30(金) 20:02:33
> 要するに、1つのスレッドでは64個のソケットが限界のようですね。

必ずしもそうではないです。
WSAEventSelect や select を使う場合は制限があると書いてあります。

TERA 2006/07/01(土) 00:03:36
[[解決]]
dairygoods

あ、そうですね。了解しました。
ご親切にありがとうございます。

TERA 2006/07/01(土) 00:03:57
[[解決]]
すみません。「さん」が抜けました・・

古いスレッドには追加発言できません。