0

LwIP 1.4.1 を使用しています。tcp サーバーのクローズが TIME_WAIT 状態でスタックしているため、同じポートでサーバーを再度開くことができません。私は試しSO_REUSE (#define SO_REUSEADDR 1ました)が、これもうまくいきません。誰かアイデアがありますか?

時間待ちで、約30秒後にタイムアウトになることを確認しました。それほど長く待ちたくありません。

4

2 に答える 2

2

SO_REUSEADDRを呼び出す前に、ソケットにソケット オプションを設定する必要がありbind()ます。

Linux は、ポートに対して bind(2) を実行した前のプログラムと、ポートを再利用したいプログラムの両方でこのオプションが設定されている場合にのみ、SO_REUSEADDR オプションによるポートの再利用を許可します。これは、後のプログラムのみが SO_REUSEADDR オプションを設定する必要がある一部の実装 (FreeBSD など) とは異なります。通常、この違いは目に見えません。たとえば、サーバー プログラムは常にこのオプションを設定するように設計されているためです。

まだ待つ必要があるという事実は、オプションが設定されていないことを示しています。

于 2013-10-15T15:36:55.057 に答える