私は何年もの間ソケットプログラミングを行ってきましたが、今までTCPを使ってメッセージを逃したことはありませんでした。私はjavaサーバとC言語のクライアントを持っています - どちらもlocalhostです。彼らは文字列として短いメッセージを前後に送信し、その間にいくつかの遅延があります。私はメッセージがクライアント側に決して届かない特定のケースが1つあります。それは再現可能ですが、マシンには妙に変わっています。Missed Socket Message
もう少し詳しく説明すると、私はサーバー側をデバッグし、sendに続いてフラッシュを見ることができます。私はクライアントに接続して、選択呼び出しを(ループで)歩くことができますが、それは決して表示されません。誰かがこれを経験して、コーディングエラー以外の説明がありますか?
つまり、接続されたソケットがあり、一方の側に書き込みを行い、もう一方の側に読み込みを行った場合、中間に何が起こりますか?
もう1つの詳細 - ループバックインターフェイスでtcpdumpを使用しましたが、見逃したメッセージが表示されます。
クライアントはマルチスレッドですか?別のスレッドがそのメッセージでselect()を実行している可能性はありますか?また、どのOSを使用していますか? –
私は、別のスレッドがそのスレッドを選択できるとは思わない。これはLinux上です。良いアイデア - 私はカウンターで確認しました。 – AdamC