DOBON.NET DOBON.NETプログラミング掲示板過去ログ

既存の接続はリモート ホストに強制的に切断されました。のエラーコードが出現する原因

環境/言語:[VB 2010 Express]
分類:[.NET]


お世話になっております。
現在の開発環境は以下の通りです。

Windows XP SP3
VB 2010 Express


現在、Socket通信を用いたサーバー側アプリを作成しています。
クライアントは、OSにはWindows CEで、業務アプリや通信アプリがインストールされている業務用端末で、
データ通信はWifiを用いて行います。

しかし、その端末からデータをサーバー側に複数のデータ送信する場合に、端末にインストールされているアプリの制約で
送信バッファサイズに上限があり、何百回もサーバ側と通信しないとデータがおくれない事が判明しました。
※もちろんサーバ側もセッションを何百とつくっています。
また、その端末がデータをサーバー側アプリからデータを受信する場合は、1セクションで受信できるという謎仕様です。

そこで何百回との通信中に、サーバー側アプリに以下のエラーが出現します。
出現頻度は、正常に全てのデータが送信できるのは20%ほどで、残りの80%は以下のエラーがでます。

「転送接続からデータを読み取れません: 既存の接続はリモート ホストに強制的に切断されました。。」

※エラーコード
WSAECONNRESET:10054

調査していくうちに送信中にエラーが出るタイミングが不定期です。
小生が無い知識を絞って考えられる原因を上げてみましたので、この可能性はない!などのご指摘をいただけると
幸いです。またこのような可能性もありますと教えて頂けないでしょうか?

1)端末の無線接続が不安定な為、データ送信中に通信が切断されエラーが出ている
2)セッションを多数作成するので、端末またはサーバー側アプリでセッションの生成のタイミングがおかしくなっているので上記エラーが出ている
3)根本的に上りの通信速度が遅い端末にSocket通信がタイムアウトを出しているので上記エラーが出ている


以上です。
よろしくお願い致します。
ネットワークの経路上の問題があるのかも・・・

それだけの情報では、解決に至ることはできないと思います。

サーバー側でパケットモニタしてみるのも手ですが、スイッチハブ
の劣化等の場合でも発生しうるので、レイヤ2スイッチでしたっけ
全パケットモニタが可能なスイッチハブを挟んでみたらCE側が悪
いのか、サーバー側なのか、経路上の問題なのか、もう少し明確に
なると思います。

以上。参考まで
記事を読んだだけでは良く判りませんが20%は正常というのなら、リソース不足が原因な気がしますね。
最初からエラーになるのではなく、しばらくするとエラーになるという場合は、経験上リソース周りが原因の事が多いので。

 サーバで同時に作成できるセッションには限りがあります。サーバがWinXPでは同時接続数はかなり少なかったと思いますが…
この辺りを念頭に調査してみては?
>オショウ様
>まっつ様

サーバー側、クライアント側、プログラムと調査をしていましたが、問題が発見できず途方に暮れていました。しかし、あるタイミングで問題が解決しました。

他のプロジェクトで使っていたアクセスポイントを停止すると問題が解決しました。
・・・つまりただ単にWifiが混線していたみたいです。

お騒がせいたしました。

DOBON.NET | プログラミング道 | プログラミング掲示板