Qt TCP程序无法从远程pc获得连接
我已经编写了两个程序,它们通过(QT-)TcP相互通信。如果它们都在我的电脑上运行(例如,使用127.0.0.1作为地址),则一切正常。一旦我在另一台电脑上部署这两个程序中的一个,我就无法恢复连接,例如,从我的程序(端口40000和40002)连接到另一台电脑上运行的TcP服务器,但从端口40001和40003的另一台电脑连接不到。是因为我的端口关闭了吗?我已经试过打开它们,但是nmap不能告诉我更多关于它们的信息。我怎样才能找到解决方案 更新:根据netstat,本地和远程pc上必要端口上的服务器正在侦听(例如:Qt TCP程序无法从远程pc获得连接,qt,sockets,tcp,Qt,Sockets,Tcp,我已经编写了两个程序,它们通过(QT-)TcP相互通信。如果它们都在我的电脑上运行(例如,使用127.0.0.1作为地址),则一切正常。一旦我在另一台电脑上部署这两个程序中的一个,我就无法恢复连接,例如,从我的程序(端口40000和40002)连接到另一台电脑上运行的TcP服务器,但从端口40001和40003的另一台电脑连接不到。是因为我的端口关闭了吗?我已经试过打开它们,但是nmap不能告诉我更多关于它们的信息。我怎样才能找到解决方案 更新:根据netstat,本地和远程pc上必要端口上的服
tcp 0 0 0.0.0.0:40002 0.0.0.0:* LISTEN off (0.00/0/0)
),但我只能从我的计算机连接到远程计算机,而不能反过来连接
另一种可能的错误:我正在一个虚拟机中运行我的开发系统,并且与外部有NAT连接。这可能是我没有收到传入信号的问题吗?可能是绑定问题和/或防火墙问题 如果您的侦听器仅绑定在127.0.0.1上,那么两台计算机之间的连接将无法工作,因为接口上听不到通信量。通常需要将绑定地址设置为0.0.0.0(这意味着任何)才能实现这一点 此外,如果这些端口绑定到任何接口,请检查防火墙是否未阻止这些端口上的通信 编辑示例netstat查找7001(WebLogic管理端口),显示在各种接口上侦听
$ netstat -nl | grep 7001
tcp6 0 0 192.168.1.149:7001 :::* LISTEN
tcp6 0 0 127.0.0.1:7001 :::* LISTEN
tcp6 0 0 ::1:7001 :::* LISTEN
编辑2我看到你在NAT上。来自目标的流量将不会路由回您自己的VM。尝试更改为与目标在同一范围内的桥接网络,如果您使用DHCP获取IP地址,那么这将是VM注册IP的最简单方法。您的防火墙可能正在阻止端口。可能侦听地址错误(127.0.0.1?)。您可以使用netstat-a-n-o测试哪些地址是打开的(检查端口40001和40003是否被监听,并且监听地址是否正确)。在NAT注释之后,我已经更新了我的答案。我的服务器正在监听所有ip地址
(tcpServer->listen(QHostAddress::Any,server::port)
,因此我不认为这是问题所在。我如何检查端口是否绑定?我没有收到关于已占用端口的报告。然后没有进程侦听该端口。我已经从我自己的典型侦听器输出中添加了示例。我在上面添加了一个更新,所有内容都已打开,应该侦听。