TCPセッション数について – プログラミング – Home

TCPセッション数について
 
通知
すべてクリア

[解決済] TCPセッション数について


るし
 るし
(@るし)
ゲスト
結合: 16年前
投稿: 19
Topic starter  

はじめまして。
「64 ソケット」制限について調べています。
グーグルでは以下検索結果でいろいろと記事を読んでいます。
http://www.google.co.jp/search?hl=ja&q=64+%E3%82%BD%E3%82%B1%E3%83%83%E3%83%88%
E3%80%80%E5%88%B6%E9%99%90%E3%80%80winsock&lr=lang_ja

ここのラウンジの過去ログでは以下の記事を見つけました。

http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200606/06060102.txt

単一スレッドでは64以上のソケットを張ることができないようですが、上記記事には
以下の記述がありました。

>WSAEventSelect や select を使う場合は制限があると書いてあります。

私は現在、CAsyncSocket(非同期ソケット)を使って単一スレッドで通信モジュールを作
成しており、このモジュールが64ソケット以上でエラーが出てしまうのかどうか調べて
います。WSAEventSelectやWaitForMultipleObjectsは使用していません。

ためしに300ソケット作成し、通信テストを実施してみたのですが、問題なくできまし
た。

テスト環境は以下です。
○開発
 Vista, VisualStudio 2008,VC++

○テスト環境:クライアント側
 Vista
○テスト環境:サーバ側
 XP sp2

○テスト内容
 1.ソケットの接続(300パス)
   結果:OK
 2.クライアントからサーバへのデータ送信
(パス毎に2kバイト送信)
   結果:OK
 3.クライアント側での全ソケットクローズ
   結果:サーバ側で全ソケットクローズを検出OK

結果から見た限りでは問題なさそうですが、実際のところどうなんでしょうか。
別ケースでエラーが発生するケースなどないでしょうか。

WSAEventSelectなどはPG上では使っていませんが、CAsyncSocketが内部的に使っていた
りすると64制限が問題になりそうな気もします。

CAsyncSocketを使ってWSAEventSelectなどを使わずにPGした場合は64ソケットの制限は
ないと考えてもよろしいでしょうか。

よろしくお願いしますm(__)m


引用未解決
トピックタグ
瀬戸っぷ
 瀬戸っぷ
(@瀬戸っぷ)
ゲスト
結合: 18年前
投稿: 178
 

>WSAEventSelectなどはPG上では使っていませんが、CAsyncSocketが内部的に使っていた
>りすると64制限が問題になりそうな気もします。
>CAsyncSocketを使ってWSAEventSelectなどを使わずにPGした場合は64ソケットの制限は
>ないと考えてもよろしいでしょうか。

CAsyncSocketのソースを確認した方がよろしいかと。
VisualStudio 2005のCAsyncSocketのソースを確認してみましたが、64ソケットの問題に
なるAPIは使用されていないようです。
1カ所でselect()が使われていましたが、fd_set構造体は1つしか使用していませんでしたし。
ただし、他のバージョンのMFCでもそうなっている。という保証はありません。

# WSAAsyncSelect()でFD_READ受けた後、select()処理していますな…。
# この方が安全なんだろうか??
# まぁ、メッセージキューに入った後でのshutdown()対策…かなぁ。
# 私のがたまに死ぬのはこのせいか?(SSL絡みっぽいんだけど)


返信引用
るし
 るし
(@るし)
ゲスト
結合: 16年前
投稿: 19
Topic starter  

瀬戸っぷ様
ご回答、ありがとうございました。
確かに、CAsyncSocketのソースを見ると使ってなさそうですね。
テストの結果を見た限りでも64ソケットの制限には引っかかって無さそうですし。

ひとまず問題なさそうということで現在の構成で継続使用してみたいと思います。

どうもありがとうございました。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました