在 qt 中使用 TCP IP 发送结构
To send structure using TCP IP in qt
我有以下一段代码。 我希望在Qt中使用TCP IP发送结构,但我无法做到这一点。请帮我发送结构。
struct message
{
U8 messagedata;
U32 date;
}msg;
msg.messagedata = 30;
消息日期 = 27;
然后使用 write(msg, len(msg)) 功能发送。但是如何将此结构放入此写入函数中。我正在使用内置的Qt网络库进行TCP/IP。
要在Qt中使用TCP,您可以使用QTcpSocket和QTcpServer类。 QTcpSocket
继承了QIODevice类,该类具有方法写入功能,可以根据需要在套接字中写入数据。
要向您发送结构,您可以打包结构:
#pragma pack(push, 1)
struct message
{
quint8 messagedata;
quint32 date;
}msg;
#pragma pack(pop)
然后使用写入方法,如下所示:
socket->write(reinterpret_cast<char*>(yourMessage), sizeof(msg));
另一种方式,您可以实现QDataStream的运算符:
QDataStream &operator<<(QDataStream &stream, const msg &m)
{
stream << m.messagedata;
stream << m.date;
}
并像这样使用它:
QDataStream stream(socket);
stream << yourMessage;
尝试:
QByteArray ba;
ba << msg.messagedata << msg.date;
socket.write (ba);
这只是向客户端发送一个QByteArray
,您也需要发送大小(实现一个简单的协议)。
相关文章:
- 如何循环打印顶点结构
- 通过方法访问结构
- 使用不带参数的函数访问结构元素
- 预处理器:插入结构名称中的前一个行号
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 孤立代码块在结构中引发异常
- 有什么方法可以遍历结构吗
- 如何在 C# 中映射双 C 结构指针?
- 如何在C++中使用结构生成映射
- 无法将结构注册为增强几何体3D点
- 多成员Constexpr结构初始化
- C++将文本文件中的数据读取到结构数组中
- 如何重构类层次结构以避免菱形问题
- 从包含 IP 标头片段的二进制文件中读取结构的最佳方法是什么
- 如何从ip地址或sockaddr_in结构(C++/WinAPI)中获取主机名
- c++结构声明和保存IP +连接的用法
- C++ 发送和接收 TCP/IP 结构
- 关于将ip传递到sockaddr_in结构
- Boost asio TCP IP asio class compile error with Visual Studio.错误:C2228:'.close'左侧必须具有类/结构/联合
- 在 qt 中使用 TCP IP 发送结构