C#でSocket.Connectメソッドを使用すると本当に奇妙な動作が発生します。 TCP Socket.Connectを有効なIPに接続しようとしていますが、ポートを閉じていて、接続が成功したかのようにメソッドが続行しています。パケットが盗聴されて何が起こっていたのか、私はそのアプリケーションがリモートマシンからRSTパケットを受信しているのを見た。しかし、トレースが行われているので、connectメソッドが例外をスローしていないことは明らかです。これを引き起こしている可能性のあるアイデアは何ですか?TCP Socket.Connectで誤検出が発生しています
実行されているコードスタンドアロンコンソールアプリケーションでこのコードを実行すると、期待どおり...、結果は謎に追加するには基本的にこの
IPEndPoint iep =
new IPEndPoint(System.Net.IPAddress.Parse(m_ipAddress), m_port);
Socket tcpSocket = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
tcpSocket.Connect(iep);
される - connectメソッドが例外をスローします。ただし、Windowsサービスの展開でそれを実行する場合、connectメソッドで例外がスローされることはありません。
Mystere Manの回答に対する編集 例外はどのように飲み込まれますか? .Connectメソッドのすぐ上にTrace.WriteLineがあり、その下にTrace.WriteLineがあります(可読性のためにコードサンプルには表示されていません)。私は両方のトレースが実行されていることを知っています。私はまたTrace.Writelineもやっていることを全部試してみることができますが、どこでもログファイルにはそのようなことはありません。私はあなたが示唆したように、内部ソケットのトレースを有効にしました。私は例外を見ません。私は成功したつながりと思われるものを見ます。
私が作成したWindowsサービスアプリケーションと診断コンソールアプリケーションの違いを特定しようとしています。私は
エンド編集もののアイデアを
おかげ