Qt QUdpSocket setSockOpt

Qt QUdpSocket setSockOpt,qt,udp,qudpsocket,Qt,Udp,Qudpsocket,我有一些旧代码,它们在套接字中使用以下标志: unsigned char str_optval [8] = {0xfc, 0x08, 0xff, 0x33, 0xcc, 0xff, 0xaa, 0x0}; res=setsockopt(sid,SOL_IP,IP_OPTIONS, (char*)&str_optval,sizeof(str_optval)); 我如何才能将此位置更改为使用QUdpSocket?我在QUdpClass中找不到任何模拟setsockopt。QAbstract

我有一些旧代码,它们在套接字中使用以下标志:

unsigned char str_optval [8] = {0xfc, 0x08, 0xff, 0x33, 0xcc, 0xff, 0xaa, 0x0};
res=setsockopt(sid,SOL_IP,IP_OPTIONS, (char*)&str_optval,sizeof(str_optval));
我如何才能将此位置更改为使用QUdpSocket?我在QUdpClass中找不到任何模拟setsockopt。QAbstractSocket提供setSocketOption,它只允许4个变体标志(枚举)。我只需要linux版本,所以如果有任何本机函数,就可以了。

套接字选项不限于UDP数据报。话虽如此,Qt只能在套接字上设置有限数量的选项。实际能够设置的最常见选项。其余的都是特定于平台的东西


旁白:硬编码文本,就像你引用的代码一样,是一个巨大的禁忌。不可移植,维护起来也是一个噩梦。无论您做什么,至少要将这些文本更改为标准标题中定义的名称。

您可能需要继续使用
setsockopt
。只需从
QUdpSocket
获取套接字描述符。请参阅
QAbstractSocket::socketDescriptor()
。旁白:这就是我开始重构的原因。我不知道hex consts是什么意思)如果这是针对Linux的,您可以查看/usr/include/bits/in.h中的套接字选项。这似乎表示的实际结构是struct ip_opts{struct in_addr ip_dst;/*第一跳;零,无源路由。/char ip_opts[40];/大小实际可变。*/};祝你好运