背景として、IPを介してサードパーティのサーバーと通信する組み込みデバイスがあります。サードパーティサーバーのコードが変更される可能性はほとんどありません。最近のリリースでは、close()を呼び出す前にshutdown()を呼び出すようにipdisconnect関数を変更しました(以前はclose()を呼び出していました)。特定の割り込みが発生した場合、組み込みデバイスは通信セッションを完了せずに切断します。これがセッションの間違った時点で発生すると、サーバーはトレースファイルを生成しますが、これはさまざまな理由で顧客に受け入れられません。これは、shutdownが呼び出された場合にのみ発生し、サーバーはこれを送信失敗エラーとして扱い(そしてトレースファイルを生成し)、より突然のclose()をトレースを必要としないもう一方の端の切断エラーとして扱います。
したがって、明らかな解決策は、shutdownの呼び出しを停止することです。この質問でのBarnes氏の回答は、2つの機能を適切に説明していますが、特定のソケットに1つのプロセスしか接続されていないことがわかっている場合、閉じる前にシャットダウンを使用する理由はありますか?
ありがとう、パトリック