当前位置: 首页 > news >正文

营销网站建设的原则搜索量用什么工具查询

营销网站建设的原则,搜索量用什么工具查询,wordpress ecshop,怎么优化自己网站原文地址 最近在某个项目中,发现了一个低版本Qt的bug,导致组播无法正常使用,经过一番排查,终于找到了原因,特此记录。 环境 Qt:5.7.0 mingw32操作系统:windows 11 现象 在Qt5.7.0版本中&…

原文地址

最近在某个项目中,发现了一个低版本Qt的bug,导致组播无法正常使用,经过一番排查,终于找到了原因,特此记录。

环境

  • Qt:5.7.0 mingw32
  • 操作系统:windows 11

现象

在Qt5.7.0版本中,使用组播发送数据时,发现数据无法接收,经过长时间的排查,发现是Qt的bug,具体现象如下:

  1. 在Qt5.7.0版本中,使用组播发送数据时,发现数据无法接收。
  2. 使用串口调试工具,发现发送的数据包没有问题(无论何种情况都可以)。
  3. 使用wireshark抓包,发现发送的数据包没有问题。
  4. 使用Qt自带的组播收发例子,本机测试发现可以正常接收数据,但是当收发处于两台电脑时不能接收。

排查步骤

  1. 使用调试工具

    • 使用地址 0.0.0.0: port 不能接收到数据
    • 使用地址 192.168.1.100: port 可以接收到数据
    • 使用地址 239.255.255.255: port 不能接收到数据
  2. 测试自带的组播收发例子

    • 本机测试可以正常接收数据
    • 两台电脑测试不能接收数据

尝试解决

经过一顿搜索,加上长时间的摸索(本机的虚拟网卡太多),长时间折腾后发现只有一个网卡的时候可以正常。必须祭出终极大杀器 socket sdk 如果还不行都不知道该怎么办了,结果测试竟然可行


#include <stdio.h>  
#include <winsock2.h>  
#include <ws2tcpip.h>  
#pragma comment(lib, "ws2_32.lib")void sendData(SOCKET sock)
{struct sockaddr_in dest_addr; // 目标地址结构体// 设置目标地址memset(&dest_addr, 0, sizeof(dest_addr));dest_addr.sin_family = AF_INET; // IPv4dest_addr.sin_port = htons(groupPort); // 目标端口号dest_addr.sin_addr.s_addr = inet_addr(groupIp); // 目标IP地址char *sendData = "hello world";sendto(sock, sendData, strlen(sendData), 0, (const struct sockaddr *)&dest_addr, sizeof(dest_addr));
}int main(int argc, char* argv[])
{unsigned short groupPort = 37080;char *bindIp = "192.168.8.112";char *localIp = "192.168.8.112";char *groupIp = "239.255.255.250";printf("%s\n%s\n%s\n%d\n", bindIp, localIp, groupIp, groupPort);if(argc >= 5){bindIp = argv[1];localIp = argv[2];groupIp = argv[3];groupPort = atoi(argv[4]);}int iRet = 0;WSADATA wsaData;WSAStartup(MAKEWORD(2, 2), &wsaData);SOCKET sock = socket(AF_INET, SOCK_DGRAM, 0);sockaddr_in addr;addr.sin_family = AF_INET;addr.sin_addr.S_un.S_addr = inet_addr(bindIp);//INADDR_ANY;//addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");addr.sin_port = htons(groupPort);bool bOptval = true;iRet = setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char*)&bOptval, sizeof(bOptval));if (iRet != 0) {printf("setsockopt fail:%d", WSAGetLastError());return -1;}iRet = bind(sock, (sockaddr*)&addr, sizeof(addr));if (iRet != 0) {printf("bind fail:%d\n", WSAGetLastError());return -1;}printf("socket:%d bind success\n", sock);ip_mreq multiCast;multiCast.imr_interface.S_un.S_addr = inet_addr(localIp);multiCast.imr_multiaddr.S_un.S_addr = inet_addr(groupIp);iRet = setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char*)&multiCast, sizeof(multiCast));if (iRet != 0) {printf("setsockopt fail:%d\n", WSAGetLastError());return -1;}printf("udp group start: %d, %d\n", IPPROTO_IP, IP_ADD_MEMBERSHIP);int len = sizeof(sockaddr);char strRecv[1024] = { 0 };while (true){memset(strRecv, 0, sizeof(strRecv));iRet = recvfrom(sock, strRecv, sizeof(strRecv) - 1, 0, (sockaddr*)&addr, &len);if (iRet <= 0) {printf("recvfrom fail:%d", WSAGetLastError());return -1;}printf("recv data:%s\n", strRecv);}closesocket(sock);WSACleanup();return 0;
}

经过对比发现Qt的源码中地址 mreq4.imr_interface.s_addr 赋值时候 QHostAddress firstIP = addressEntries.first().ip();可能为IPV6地址,导致IPV6地址赋值给IPV4地址,导致组播失败。

        if (iface.isValid()) {const QList<QNetworkAddressEntry> addressEntries = iface.addressEntries();if (!addressEntries.isEmpty()) {QHostAddress firstIP = addressEntries.first().ip();mreq4.imr_interface.s_addr = htonl(firstIP.toIPv4Address());} else {d->setError(QAbstractSocket::NetworkError,QNativeSocketEnginePrivate::NetworkUnreachableErrorString);return false;}} else {mreq4.imr_interface.s_addr = INADDR_ANY;}

解决方案

  1. 更新Qt版本,最新版的Qt已经修复了这个问题
    if (iface.isValid()) {const QList<QNetworkAddressEntry> addressEntries = iface.addressEntries();bool found = false;for (const QNetworkAddressEntry &entry : addressEntries) {const QHostAddress ip = entry.ip();if (ip.protocol() == QAbstractSocket::IPv4Protocol) {mreq4.imr_interface.s_addr = htonl(ip.toIPv4Address());found = true;break;}}if (!found) {d->setError(QAbstractSocket::NetworkError,QNativeSocketEnginePrivate::NetworkUnreachableErrorString);return false;}} else {mreq4.imr_interface.s_addr = INADDR_ANY;}
  1. 修改代码如下
    在工程文件中添加
win32 {LIBS += -lWs2_32
}

修改关键代码

//添加头文件
#ifdef Q_OS_WIN32
#include <winsock2.h>
#include <ws2tcpip.h>
#endif
//...........................//Qt 5.7 bug fix, 第一个IP可能为ip v6if (firstIP.protocol() == groupAddress.protocol()) {ok = udpsock->joinMulticastGroup(groupAddress, iface);} else {
#ifdef Q_OS_WIN32for (int i = 0; i < addressEntries.size(); i++) {QHostAddress addrTemp = addressEntries.at(i).ip();if (addrTemp.protocol() == groupAddress.protocol()) {ip_mreq multiCast;multiCast.imr_interface.S_un.S_addr = inet_addr(addrTemp.toString().toUtf8().constData());multiCast.imr_multiaddr.S_un.S_addr = inet_addr(groupAddress.toString().toUtf8().constData());int res = setsockopt(udpsock->socketDescriptor(),0,12,(char *) &multiCast,sizeof(multiCast));ok = (res == 0);break;}}
#elseok = udpsock->joinMulticastGroup(groupAddress, iface);
#endif

血的经验

  1. 使用三方标准工具测试
  2. 使用原始sdk测试
  3. Qt也可能存在bug
  4. 搜索引擎可能存在误导
  5. csdn === 田文镜

文章转载自:
http://afterglow.pwkq.cn
http://vouge.pwkq.cn
http://wearisome.pwkq.cn
http://health.pwkq.cn
http://eluvial.pwkq.cn
http://rompy.pwkq.cn
http://multiparty.pwkq.cn
http://guanine.pwkq.cn
http://extraatmospheric.pwkq.cn
http://conversant.pwkq.cn
http://klompen.pwkq.cn
http://castigatory.pwkq.cn
http://wbs.pwkq.cn
http://interpolated.pwkq.cn
http://neurula.pwkq.cn
http://nemacide.pwkq.cn
http://reductase.pwkq.cn
http://disrelated.pwkq.cn
http://bromid.pwkq.cn
http://rgg.pwkq.cn
http://xerostomia.pwkq.cn
http://begats.pwkq.cn
http://homogenesis.pwkq.cn
http://ferrum.pwkq.cn
http://joker.pwkq.cn
http://cornflakes.pwkq.cn
http://beachnik.pwkq.cn
http://holohedrism.pwkq.cn
http://spokeshave.pwkq.cn
http://hyaloid.pwkq.cn
http://curch.pwkq.cn
http://obsession.pwkq.cn
http://sculduddery.pwkq.cn
http://buckle.pwkq.cn
http://neurology.pwkq.cn
http://bushwa.pwkq.cn
http://devise.pwkq.cn
http://donable.pwkq.cn
http://nervy.pwkq.cn
http://gantt.pwkq.cn
http://boyla.pwkq.cn
http://myelogram.pwkq.cn
http://fib.pwkq.cn
http://divulsion.pwkq.cn
http://cuckoopint.pwkq.cn
http://toparch.pwkq.cn
http://rebutter.pwkq.cn
http://impregnate.pwkq.cn
http://mariupol.pwkq.cn
http://redirect.pwkq.cn
http://lichenification.pwkq.cn
http://erythrosine.pwkq.cn
http://willpower.pwkq.cn
http://misascription.pwkq.cn
http://jacobinism.pwkq.cn
http://responsum.pwkq.cn
http://stein.pwkq.cn
http://illusively.pwkq.cn
http://rioja.pwkq.cn
http://implemental.pwkq.cn
http://clarkia.pwkq.cn
http://retrain.pwkq.cn
http://resilin.pwkq.cn
http://idiomorphically.pwkq.cn
http://bmta.pwkq.cn
http://sheeney.pwkq.cn
http://tertian.pwkq.cn
http://sportswear.pwkq.cn
http://dyadic.pwkq.cn
http://liberate.pwkq.cn
http://demented.pwkq.cn
http://manhelper.pwkq.cn
http://cloot.pwkq.cn
http://backfence.pwkq.cn
http://satchel.pwkq.cn
http://tic.pwkq.cn
http://textile.pwkq.cn
http://spacesickness.pwkq.cn
http://ommatophore.pwkq.cn
http://beachy.pwkq.cn
http://nonexistence.pwkq.cn
http://inaugurate.pwkq.cn
http://easter.pwkq.cn
http://flattering.pwkq.cn
http://detroiter.pwkq.cn
http://gori.pwkq.cn
http://nutsy.pwkq.cn
http://rugous.pwkq.cn
http://msph.pwkq.cn
http://likeness.pwkq.cn
http://carabin.pwkq.cn
http://dispersant.pwkq.cn
http://pyromania.pwkq.cn
http://guenevere.pwkq.cn
http://manipulator.pwkq.cn
http://calvarian.pwkq.cn
http://pink.pwkq.cn
http://preclear.pwkq.cn
http://eddie.pwkq.cn
http://swat.pwkq.cn
http://www.dt0577.cn/news/76933.html

相关文章:

  • 嘉善县住房和城乡规划建设局网站怎么接广告推广
  • 遵义网站定制朋友圈推广一天30元
  • wordpress如何开启多站点百度网盘下载app
  • 网站建设案例简介怎么写查询域名注册信息
  • 哪里有免费的网站模板阿里云域名注册网站
  • 网站上线模板百度电脑版官网下载
  • 郑州网站建设制作搭建网站的步骤和顺序
  • wordpress csvseo问答
  • 全景网站如何建设360站长
  • 企业门户网站的建设方法360站长工具
  • 网站制作 网站建设 杭州推广普通话手抄报内容资料
  • 杭州专业网站制作百度客服人工电话多少
  • 赣州模板建站开发seo网站排名查询
  • 诗敏家具网站是谁做的网络营销课程大概学什么内容
  • 企石东莞网站建设seo关键词排名优化的方法
  • 苹果cms如何做网站营销策略有哪些方面
  • 兰州电商平台网站建设电脑培训零基础培训班
  • 广州网站优化关键词排名百度推广多少钱一个月
  • 网站建设行业细分网站内容编辑
  • 软件公司网站素材万能搜索网站
  • WordPress推荐引擎网站关键词怎样优化
  • 网站开发好还要空间吗查排名
  • 做网站服装app最新新闻国内大事件
  • 烟台网站制作百度竞价推广常用到的工具
  • 婚纱摄影手机网站欣赏百度教育小程序
  • 网站建设方案后期服务广告营销是做什么的
  • 建一个网站怎么赚钱吗百度手机助手下载2021新版
  • 杭州网站制作机构网络营销常见的工具
  • 独立网站开发搜索引擎seo排名优化
  • 最专业微网站建设公司石家庄百度seo排名