【发布时间】:2014-08-01 03:49:25
【问题描述】:
我的目标是通过UDP协议发送一个结构,我的问题是我用来做它的函数与他参数中的结构不兼容。 (我正在使用 QT)
这是我制作的代码:
void MyUDP::sendUDP()
{
typedef struct MyStructTag
{
int test1;
bool test2;
char test3;
} MyStruct;
MyStruct envoie;
// Sends the datagram datagram
// to the host address and at port.
// qint64 QUdpSocket::writeDatagram(const QByteArray & datagram,
// const QHostAddress & host, quint16 port)
socket->writeDatagram(envoie, QHostAddress("10.100.14.79"), 4000);
}
我知道这一行是完全错误的:socket->writeDatagram(envoie, QHostAddress("10.100.14.79"), 4000); 但我不知道如何正确使用此功能,或者是否有替代此功能的方法?
感谢您的帮助。
【问题讨论】:
-
socket->writeDatagram( (const char*) &envoie, sizeof (envoie), QHostAddress("10.100.14.79"), 4000 ); -
爱你...谢谢你的帮助,但是在函数的文档中我没有找到这个参数,这怎么可能?
-
是的,我的IDE没有给我指定这个,感谢您的帮助,如果您愿意,可以为大家发布答案。
-
Ivan 的解决方案可能在这种情况下可以工作,因为结构在内存中是连续的,但如果您有任何动态分配的内容,则会失败。它也不允许转换为网络字节顺序(尽管 Qt 可能在内部处理了一些我不知道的事情,需要检查一下)。