gpt4 book ai didi

qt - 如何通过 QTcpSocket 发送整数?

转载 作者:行者123 更新时间:2023-12-04 13:17:12 25 4
gpt4 key购买 nike

我是 Qt 的新手,所以如果这是一个完全愚蠢的问题......

我正在尝试使用 QTcpSocket。

如果我这样做:

...
QTcpSocket * socket
socket = new QTcpSocket(this);
socket.write(1);
...

它提示 write() 不能处理整数(不是 const char *)。

如果我这样做:

...
QTcpSocket * socket
socket = new QTcpSocket(this);
socket.write("1");
...

另一方将其视为整数 49(1 的 ASCII)。

关于类似但不同的问题,是否可以通过 QTcpSocket 发送结构或联合?

============================================= ===

编辑:

服务器已经接受整数,并且需要一个整数——我无法控制它。

最佳答案

您遇到的问题与 Qt 无关,任何其他 Socket 或 Streaming 接口(interface)都会出现同样的问题。

服务器的提供者需要给你协议(protocol)描述。此描述通常包含使用的端口(TCP、UDP、数字)、其他 TCP 参数和传输数据的编码。有时,这个协议(protocol)(或其实现)被称为(协议(protocol)-)栈。

编码不仅包含字节顺序,还包含复杂结构如何传输的描述。后一种信息通常以称为“ASN.1”的东西进行编码 - 抽象语法表示法。

如果你的服务器真的很简单,只是在没有任何元信息的情况下一个接一个地接受整数,并且在同一个平台上,那么你可以这样做:

foreach (int i in my set of integers)
{
ioDevice->write((const char*) &i, sizeof(i));
}

您将整数的地址作为数据缓冲区的开始,并传输与整数一样多的字节。但请注意,如果您将数据从 Intel 架构传输到 16 位架构或摩托罗拉 PPC,这将失败。

关于qt - 如何通过 QTcpSocket 发送整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7081214/

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