问题
最近遇到一个很弱智的socket问题,最后终于解决了,记录一下。
问题是这样的,局域网内两台机子需要socket通信,使用的是udp方式,本地测试的一点问题都没有,部署到线上的时候,死活连不上,防火墙关了,入站规则,出站规则都添加了,ip和端口都检查了无数遍了,依旧连不上,ping也ping的通,真是活见鬼了,最后无意间发现一个网友的回复,然后改了一下,真的生效了!
解决
就是在创建udp这个实例的时候,切记不要绑定localhost
或者127.0.0.1
,要用类似any
或者udp::v4()
这些通用的参数!
用Qt举例就是:
// 不要使用:udpSocket->bind(QHostAddress::LocalHost, localPort);
udpSocket->bind(QHostAddress::Any, localPort);
切记!切记!切记!