私はTCPサーバーを作成していました。私はlocalhost上でうまく動作します。リモートで展開すると、宛先に向かって途中でいくつかのバイトが失われます。TCPパケット損失の部分
localhostとremoteでnetcatを使用して、2つの出力のdiffを作成しました。また、紛失バイトは確定的です。
したがって、同じパケットが失われる可能性は非常に低いので、パケットロスであるとは限りません。
ソケットの書き込みサイズを1000バイトに減らそうとしましたが、まだこの問題が発生しています。
この種のエラーに共通して考えられる原因はありますか?
私はコードを投稿できましたが、Boost asioライブラリのsocket.sendだけです。私はエラーがコードから来ているかどうかわからない、そうでなければ、それはlocalhostで動作しませんでした。
はあなたの助けのために事前にありがとうござい
Tcpは無力です。それは仕様https://tools.ietf.org/html/rfc793にあります。あなたはtcpを使用しているか、他の場所に問題がありますか? –
これは、 'send()'の戻り値をチェックしていないことが原因です。 'send(sck、data、1000、0)'を呼び出すと、 '990'を返し、戻り値をチェックして残りの10バイトを再送信しなければ、それらは失われます。これは 'recv()'でも同じです。 – rodrigo
@Hdヒール私は損失が少ないことを知っています。だからここで私は –