2009-04-06 3 views
2

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サービスアプリケーションと診断コンソールアプリケーションの違いを特定しようとしています。私は

エンド編集もののアイデアを

おかげ

答えて

0

私はこれをもう一度見たことがありません。どこかに何かが壊れていたようです。アプリケーションがインストールされたOSまたは.NETフレームワークのいずれか。

2

を実行していますが、例外がキャッチされ、飲み込まサービスではなく、コンソールアプリでされていませんか?

私の最初のステップは、2つの実装の違いを分離することです。トレースに言及していますが、これがネットワークトレース(BCLの一部)であるか、独自のトレースであるかは問いません。ネットワークトレースを使用していない場合は、有効にします。

1

を参照してください。AppDomain.CurrentDomain.UnhandledException

関連する問題