我的计算机本地网络上的IP是192.168.0.100
,我用
if (!tcpServer->listen(QHostAddress::LocalHost, 1234)) {
当我尝试使用netcat 192.168.0.100 1234
连接到它时,连接被拒绝,但netcat localhost 1234
成功。
与此同时,如果我使用netcat -l -p 1234
收听,我可以毫无问题地连接192.168.0.100
和localhost
。
这让我摸不着头脑,为什么会这样?
答案 0 :(得分:7)
要接受来自外部的连接,您必须先聆听0.0.0.0
,而不是127.0.0.1
或localhost
。后者只允许来自同一台机器的连接。这也是QHostAddress::LocalHost
的价值。
因此,将第一个参数更改为QHostAddress::Any
,它应该可以正常工作。
答案 1 :(得分:3)
localhost
位于单独的网络接口
您可以使用QHostAddress::Any
侦听外部连接