2

私のアプリは、特定の送信元ポートを使用してサーバーへのアウトバウンド接続を確立します (ファイアウォールの問題を見越して - 強化されたシステムでは、事前にポートを指定する必要がある可能性があります)。

私の問題は、アプリが最初に接続を確立することです。ただし、接続が切断された場合は再試行されますが、ソケットは「使用中のアドレス」という BindException を取得します。netstat -pant で示されるように、これは当てはまりません。これは、ソース ポートとリモート ソケットのペアが存在しないことを示しています (つまり、WAIT モードでも表示されず、接続が存在しないだけです)。成功せずに永遠に接続しようとします。以前の接続が残っているという問題であれば、最終的にはタイムアウトになると思いますが、そうではありません。バインド例外が永久に発生します。

私の場合、10.0.1.20:4002 から 10.0.1.229:4001 に接続していました。そのため、netstat を使用してソース ソケット (10.0.1.20:4002) またはリモート ソケット (10.0.1.229:4001) を探していましたが、最初の接続が切断された後はどちらも見つかりませんでした。これは、アドレスが使用されるべきではないことを示しています。 .

netstat で報告されなくても、この接続が維持される原因となるものはありますか?

私はLinuxを使用していることに注意してください。また、ランダムなソースポートを使用すると問題が回避されることはわかっていますが、修正されません。

私にお知らせください。

ありがとう、ジブ

4

1 に答える 1

2

特定の悪いことが起こったとき、close()は呼び出されていませんでした-doh!

于 2009-10-09T00:17:26.877 に答える