いくつかのポートでリッスンするフォワード プロキシを Linux に実装しました。接続が発生するたびに、それは外の世界に入ります。私のセットアップは次のようになります。
Outerworld<----->プロキシ (ポート A でリッスン)<------->ブラウザ (プロキシをポート A に設定して構成)
しかし、proxy-outer world と proxy-browser の間の接続をいつ閉じるべきかわかりません。データ サイズが 0 のパケット (recv()) が表示されると、クライアント側からの通信が終了したという印象を受けました。「recv()=0」を取得したら、外界で「close()」を実行します。これは正しい方法ですか?または、shutdown() を実行する必要がありますか? また、ブラウザがデータパケットで「FIN」を送信し、それをキャッチできない場合があると思います。閉じられていないソケットでブラウザーからの接続が表示されることがあります。(Linux は同じ fd 番号を再利用します。これが理由の 1 つです。私はソケット クロージャが不足していると思います。)
どこが間違っているのでしょうか。
ありがとう