お世話になっております。
現在、Windowsソケットプログラム(winsock1.1)により、P2Pでの非同期のTCP通信プログラムを組んでます。
そこで、クライアントからサーバーへの同時接続のチェックをするために以下のような処理を行っています。
#関係ありそうな情報のみ載せます。足りなければご質問下さい。
OSはWindowsXP HomeEditionです。
なお、OSによる同時接続制限はBiotというツールにより20000というふうに設定しております。
・クライアント
1.ソケット3000個用意
2.for文ループ処理によりソケット数分Connectを実行
・サーバー
1.listenの同時接続最大数は20000に設定
毎回Connect実行時、大体2000回目辺りからエラーが出てきます。
その後、イベントが返って来た時のエラーチェックでも、WSAECONNREFUSED(10061)で「サーバーにより接続が拒否された。」というエラーが検出されます。
結局、接続成功は500~700回ぐらいでした。
この現象に対する対処法や解決法はないでしょうか?
現状では、全てのConnect要求を成功できるようにしたいと思っております。
子プロセスを作成するような方法は時間が無いので考えておりません。
9/18にも同じようなしておりますが、前より詳細を書いて再投稿いたしました。
以上、よろしくお願い致します。
No.2ベストアンサー
- 回答日時:
>500単位で減らしても、失敗することには変わりありませんでした。
>確か、500回中250.1000回中300.のような感じだったと思います。
質問にあるように「接続成功は500~700回」なので、500回中500になりそうですが、成功率がConnect回数によって異なるというのが気になります。
サーバのacceptが間に合わないということではないようですが、accept成功数と一致しているでしょうか?
>イベントログ
[スタートメメニュー]→[設定]→[コントロールパネル]→[管理ツール]→[イベントビューア]
>netstat
netstat -n で、
TCP 192.168.0.2:3761 192.168.0.3:10001 ESTABLISHED
のようなメッセージが大量に表示されるはずです。
ESTABLISHEDとなっているのがconnect中の1個のポートです。
netstat -n > a.txt としてファイルにリダイレクトすれば調べるのが楽でしょう。
意味は参考URLを…
参考URL:http://www.atmarkit.co.jp/fwin2k/win2ktips/234ne …
この回答への補足
ご回答ありがとうございます。
返事が遅れてすみません。
>サーバのacceptが間に合わないということではないようですが、>accept成功数と一致しているでしょうか?
一応、サーバーとクライアントのコネクション成功数は一致しておりました。
No.1
- 回答日時:
Biotは使ったことはないので、思いつくままに。
・Biotの効果は確認できたのですか。
・winsock2の使用
・forで3000回のConnect中、sleepでディレイを入れてみる。
あるいは同期型にしてみる。
・いきなり3000回でなく、1000,2000と増やしてみる。
・ファイアウォールの影響
・WindowsXP HomeEdition
クライアント、サーバ共ですか?
・イベントログにエラーが出ていないか。
・netstat、パケットモニタの使用。
・サーバのacceptが間に合わないので、クライアントでタイムアウトになっている?
・自分で管理しているサイトがあれば、ポート80でConnectしてみる。
この回答への補足
>Biotの効果は確認できたのですか。
確認方法は良くわかりませんが、一応、接続成功数は増えました。
>winsock2の使用
まだ、考えておりません。
>forで3000回のConnect中、sleepでディレイを入れてみる
入れると成功回数は増えますが、あくまで「同時接続」を想定した
処理なので、sleepはなしの方向で・・。
>いきなり3000回でなく、1000,2000と増やしてみる。
500単位で減らしても、失敗することには変わりありませんでした。
確か、500回中250.1000回中300.のような感じだったと思います。
>ファイアウォールの影響
サーバー、クライアント共に切っております。
>WindowsXP HomeEdition
>クライアント、サーバ共ですか?
クライアントはHomeEdtionで、サーバーはProfessionalです。
>イベントログにエラーが出ていないか
イベントログというのは?ちなみに、エラーはWSAGETSELECTERRORで
取ってきています。
>netstat、パケットモニタの使用
netstatの使い方はわかりますが、どのように調べたらよいの
でしょうか?
>サーバのacceptが間に合わないので、クライアントでタイムアウト
>になっている
その可能性もありますが、出てきたエラーは接続拒否なのでどうな
んでしょうか。
>自分で管理しているサイトがあれば、ポート80でConnectしてみる
持っていないです。
以上です。よろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Wi-Fi・無線LAN PCWi-Fiの設定方法がわからなくて困っています。 4 2022/12/28 18:30
- サーバー 接続・ログインはできているのにメールが送信できない 2 2022/06/27 15:03
- ドメイン・サーバー・クラウドサービス FileZillaを使用してwpXサーバーに接続できない 2 2022/03/29 21:02
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- デスクトップパソコン USB接続のマイクについて 6 2022/09/18 07:54
- UNIX・Linux ubuntuサーバーを久々に再起動したらネットにつながらなくなった。 1 2022/06/06 16:21
- VPN VPNに接続すると、インターネットに接続できなくなります。 1 2022/06/19 22:51
- ネットワーク 社内ネットワークの1台だけ接続できないときがある 4 2023/01/25 11:58
- VPN VPN接続が急にできなくなりました。 1 2022/12/13 15:25
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TCP/IP通信時のサーバーからの受信
-
UDP通信におけるbind関数について
-
エクセル VBA でのCOMポート...
-
VB6‥ソケットについて
-
recv関数でフリーズしてしまう
-
UDP通信する時に、相手にどうや...
-
ソケットのrecvの戻り値が0
-
WinSockでの通信プログラムがう...
-
ソケットのクローズについて
-
UDPのソケットプログラミング
-
WinSockでのソケット通信
-
winsockでファイル転送
-
バインドと接続(BindException...
-
TCP/IP通信(ソケット通信)に...
-
空きポートの取得方法
-
winsockのポート指定について
-
クライアントソケットMACアドレ...
-
C#でメッセンジャー作ってます...
-
ソケット通信 同じポート番号...
-
UDPで受信終了の合図を出して受...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
TCP/IP通信時のサーバーからの受信
-
エクセル VBA でのCOMポート...
-
UDP通信する時に、相手にどうや...
-
UDP通信におけるbind関数について
-
UdpClient 送信元のIPアドレ...
-
Winsockで接続待ちタイムアウト...
-
recv関数でフリーズしてしまう
-
ソケットのクローズについて
-
ソケットのrecvの戻り値が0
-
Socket通信の0バイト受信について
-
ソケット通信 同じポート番号...
-
相手のIPアドレスを取得する方法
-
ソケットでクライアントのipア...
-
VB6のwinsockでconnectできない
-
Connectエラーが出てしまう・・...
-
ソケット通信の送受信遅延-02 ...
-
同じLAN内パソコンのIPアドレス...
-
WinSockでの通信プログラムがう...
-
UDPのソケットプログラミング
-
非ブロッキングソケットのrecv...
おすすめ情報