TCP ソケットを使用して、私のクライアント/サーバーは、メッセージがクライアントから送信され、サーバーがそれらを受信してファイルに書き込む状況にあります。私が直面している問題は、メッセージが分割されているにもかかわらず、何らかの理由で、それらがすべて 1 行で受信されていることです。
たとえば、次のようにテキスト ファイルを 1 行ずつ送信するとします。
socket->write(msg.toUtf8().constData());
socket->waitForBytesWritten(5000);
サーバーは、1 回の受信で複数のメッセージを受信することがあります。
したがって、テキスト ファイルに次のように記述されているとします。
こんにちは、
これはクライアントです
時々、サーバーは「こんにちは、これがクライアントです」を受信し、両方のメッセージが別々であるべきなのに一緒に受信します。
誰かが私が間違ってコーディングしたと言うかもしれませんが、奇妙なことに、クライアント/サーバーをローカルでテストすると、すべて完璧に動作します。ネットワーク経由で行うとすぐに、この問題が発生し始めます。メッセージの送信間に遅延を追加して、いくつかのテストを行いました。これでも問題は修正されましたが、メッセージごとに遅延を約 1 秒に増やした後でのみです。大量のメッセージを送信する必要がある場合、これは問題であり、1 秒ごとに最終的に長い時間がかかります。