gpt4 book ai didi

c++ - Qt Tcp Socket - 一次接收多个发送

转载 作者:可可西里 更新时间:2023-11-01 02:57:06 27 4
gpt4 key购买 nike

使用 TCP 套接字,我的客户端/服务器有一种情况,消息从客户端发送,服务器接收消息并将它们写入文件。我遇到的问题是出于某种原因,即使我将消息分开,它们都是在一条线上收到的。

例如..假设我使用以下方式逐行发送文本文件:

socket->write(msg.toUtf8().constData());
socket->waitForBytesWritten(5000);

服务器有时会在一次接收中收到多条消息。

所以如果文本文件说:

你好,

这是客户

有时服务器会收到“你好,这是客户端”,在它们应该分开的时候一起接收两条消息。

有人可能会说我当时编码有误,但奇怪的是,如果我在本地测试客户端/服务器,一切都完美无缺。一旦我通过网络执行此操作,这个问题就会开始发生。我做了一些测试,在发送消息之间增加了延迟。这也解决了问题,但只是在我将每条消息的延迟增加到近 1 秒之后。如果需要发送大量消息,这是一个问题,每条 1 秒最终需要很长时间。

最佳答案

请记住,TCP 是一种 协议(protocol)。没有自然的消息边界,数据只是字节流。

如果您希望消息被分开,您必须在 TCP 之上添加一个包含这些边界的协议(protocol)。对于文本,换行符是一个自然的边界,并在许多基于文本的协议(protocol)中使用。

关于c++ - Qt Tcp Socket - 一次接收多个发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14931722/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com