2

したがって、この問題のコード例を実際に提供することはできないため、この質問が少し「あいまい」になることはわかっていますが、問題を説明しようとすると、誰かがそれを認識する可能性があります。

基本的に、C# で記述された 2 つのアプリケーションがあります。

[アプリ A] は TCP ソケットを介して [アプリ B] に接続し、データを送信します。[アプリ B] はもちろん、同じ TCP 接続で [アプリ A] にデータを送信できます。【アプリB】は6~7年使用しているアプリで、「本番サーバー」で問題なく動いています。

問題はこれです:

[アプリ A] と [アプリ B] をローカル マシンで実行すると、comm. それらの間は期待どおりに機能します。

しかし、[アプリ A] と [アプリ B] をサーバー/リモート マシンで実行すると (どちらも同じマシンで実行されますが、代わりにリモート サーバーで実行されます)、それらの間の通信は期待どおりに機能しません。すると【アプリA】が接続して【アプリB】にデータを送信し、【アプリB】が反応して【アプリA】に返信するが、【アプリA】では返信が届かず、代わりにTCP 接続が強制終了されます。

これは、ローカル マシンでまったく同じコードを実行した場合には発生しません。

ここで、ローカル マシンで [アプリ A] を実行し、[アプリ A] がリモート/サーバー マシンの [アプリ B] に接続すると、期待どおりに動作します。コム。動作し、TCP 接続は存続します。

[アプリ B] をリモート サーバーで実行し続け、[アプリ A] を (ローカル マシンではなく) リモート サーバーで起動すると、再び機能しなくなります。[App A] がデータを送信した後、TCP 接続は強制終了されます。

私が見たように、これはコードの問題ではありません。ローカルで動作し、別のマシンでアプリを実行しても問題ありませんか?

.NET 4.0 を使用して、ローカルの Win 7 とリモート/サーバー マシンの Win Server 2003 の両方のマシンで Windows を実行しています。

これは鐘を鳴らしますか?

4

2 に答える 2

0

先に進むことはあまりないので、暗闇の中で突き刺します。私のランダムな推測は、アプリ A またはアプリ B が使用するポートの 1 つがサーバー/リモート マシンで使用されていることです。同じポートがローカル マシンで自由に使用できる場合があるため、同じ動作は見られません。

于 2013-02-23T20:57:25.520 に答える
0

アプリ A を実行しているサーバーに、ローカル ファイアウォール設定または物理ファイアウォールがあり、アプリ B のサーバーからのインバウンド接続を妨げているように思えます。

接続タイプ (TCP または UDP) について、リッスンしているポートでインバウンド接続が許可されていることを確認します。

于 2013-02-23T20:51:56.480 に答える