原来的项目用着Qt5.3,后来静态编译了Qt5.5想同步一下版本,就统一开始使用Qt5.5。
然后发现了一些QTcpserver/QTcpsocket的差异(估计Qt5.4或者5.5发布的时候官网就有,只不过没注意),过程记录一下。
先写重点:5.5增强了ipv6的默认性
首先,是在获取连接的时候,由于监听的语句是这样写的:
bool isListen = this->gpsTcpServer->listen(QHostAddress::Any, port);
然后原本Qt5.3获取到的socket的“XXX.XXX.XXX.XXX”格式(如“192.168.1.55”)
tempsock->peerAddress().toString();变成了IPV6格式的
“:::ffff:192.168.1.55”
如果需要转的话要先经过:
QHostAddress temphost ;
QString sockLinkStr;
temphost.setAddress(tempsock->localAddress().toIPv4Address());
sockLinkStr = temphost.toString() \
+ ":