- - PR -
.NET Framework 上でのSocket同時接続数
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-12-12 23:20
初めて投稿させていただきます。
.NET Frameworkを使って(C#かVB.NETをつかって)ソケットプログラミングをしようとしています。 自分なりに調べてみたところ、System.Net.Sockets.Socketクラス、もしくはそのラッパークラス(TcpClient, TcpListenerなど)を使えば実現できそうだということがわかりました。 この場合、一度に最大どれだけのコネクションを維持できるのでしょうか? (サーバー側、クライアント側それぞれについて) MSDNライブラリや、ネット上を調べてみましたが、この最大接続数についての記述は見つけることができませんでした。 ご存知の方、どうかよろしくお願いいたします。 (可能であれば情報源のURLも教えていただけると助かります。) | ||||||||
|
投稿日時: 2007-12-12 23:46
WebRequest派生クラスでは 既定でAuthority(ホスト:ポート)あたり2つに制限されています。 ServicePointManager.DefaultXXXConnectionLimitで変更できます。 .Netの制限は他に知りません。 次にWindowsの制限が入ります。これはOSによって異なります。 XPや2003、Vistaは知りませんが、2kで25600程度が理論限界です。 サーバー、クライアントは関係ありません。 メモリの都合上、実際にはもっと早く限界が来ます。 以前実測したところ、2k3で約5000接続が限界でした。 また、スレッドあたり64接続の制限もあります。 これはWaitForMultipleObjectsに拠ります。 これを使わないように工夫すれば、スレッドあたりの制限は回避できます。 情報源は忘れました。 自分で調べたもの、他人が調べてくれたもの、Webなどです。 [ メッセージ編集済み 編集者: れい 編集日時 2007-12-13 00:06 ] | ||||||||
|
投稿日時: 2007-12-13 19:34
http://support.microsoft.com/kb/122920/ サーバ側とクライアント側の構成が分かりませんが、サーバ側のOSによって 接続クライアント数は10という制限があるものがありマス。 | ||||||||
|
投稿日時: 2007-12-13 22:35
これはNetBiosの制限では? WinSockじゃないと思います。
@ITデビューしてるし! パリはイルミネーションが綺麗でしょうねぇ。 | ||||||||
|
投稿日時: 2007-12-14 18:13
#ばれてる・・w
んと、確かWindowsXp(SP2)とかはTCPのドライバレベルで 接続数を10と制限してたと記憶してマス。 http://itpro.nikkeibp.co.jp/article/Watcher/20060812/245765/ WinSockの64制限等は http://www.kt.rim.or.jp/~ksk/wskfaq-ja/advanced.html あたりにまとまっているデスね。 | ||||||||
|
投稿日時: 2007-12-14 20:03
この10は片側がダウンしたTCP接続の制限で、 対象OSはWindows XP SP2とWindows Server 2003 SP1です。 こっちは確かにSocketですが、
この10はWindows NT WorkstationとWindows 2000 ProfessionalのNetBiosの制限で、 Socketじゃないです。 全く違う話ですね。 でも確かにOSや状況によっては制限があるようですね。 きっと他にもいろいろあるような気がします。 [ メッセージ編集済み 編集者: れい 編集日時 2007-12-14 20:08 ] | ||||||||
|
投稿日時: 2007-12-14 23:07
一つのセッションを維持するのにどれだけのコストがかかるかわからないと答えようがない気がします。 サーバのリソースによっても変わってくるので、そういった資料は存在しないと思いますし、自分で調べるしかないと思います。 _________________ かるあ のメモ と スニペット |
1