Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt TCP程序无法从远程pc获得连接_Qt_Sockets_Tcp - Fatal编程技术网

Qt TCP程序无法从远程pc获得连接

Qt TCP程序无法从远程pc获得连接,qt,sockets,tcp,Qt,Sockets,Tcp,我已经编写了两个程序,它们通过(QT-)TcP相互通信。如果它们都在我的电脑上运行(例如,使用127.0.0.1作为地址),则一切正常。一旦我在另一台电脑上部署这两个程序中的一个,我就无法恢复连接,例如,从我的程序(端口40000和40002)连接到另一台电脑上运行的TcP服务器,但从端口40001和40003的另一台电脑连接不到。是因为我的端口关闭了吗?我已经试过打开它们,但是nmap不能告诉我更多关于它们的信息。我怎样才能找到解决方案 更新:根据netstat,本地和远程pc上必要端口上的服

我已经编写了两个程序,它们通过(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)
,因此我不认为这是问题所在。我如何检查端口是否绑定?我没有收到关于已占用端口的报告。然后没有进程侦听该端口。我已经从我自己的典型侦听器输出中添加了示例。我在上面添加了一个更新,所有内容都已打开,应该侦听。