我已经坚持了几天了。当使用 python 在 OSX 中打开监听套接字时,我能够通过 canyouseeme.org 验证我正在监听的端口是否打开。
Python代码
import socket
host = ''
port = 8072
backlog = 5
size = 1024
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host,port))
s.listen(backlog)
client, address = s.accept()
while 1:
data = client.recv(size)
print(data)
当我尝试在我的 Windows VM(运行 vmware 6.02)上创建一个类似的监听套接字时,连接超时。我在尝试连接时使用的步骤。我有屏幕截图,但没有足够的代表发布,哈。
1) 验证实际收听:
- 使用 CurrPorts,我看到进程名称:pythonw.exe,协议(protocol):TCP,本地端口:8072,本地地址:0.0.0.0,远程地址:0.0.0.0,状态:监听....
2) 检查ip地址
- cmd terminal ipconfig -all , IPv4 Address : 192.168.2.10(Prefered)
3) 验证端口转发到正确的 ip 地址
描述:UMSM,入站端口:8000-9000,类型:TCP,私有(private)IP地址:192.168.2.10,私有(private)端口:8000-9000
554 也顺便转发了
4) 端口不可见
- canyouseeme 连接不上原因:连接超时
我知道端口转发是有效的,因为我能够访问 Windows 端 554 上的另一个开放端口,即 grc.com 上的“所有服务端口”在隐身模式下验证所有其他端口 < 1000 是否打开。
我的想法是我在创建套接字时做错了什么。在 python 中打开监听套接字时,与 osx 相比,我需要在 Windows 上做哪些不同的事情?
谢谢,
吉姆
---- 编辑----
现在我可以添加图片了
2.)
3.)
1.)
4.)
所以我知道它不是防火墙,因为我可以连接到不同的 Windows 端口
另外,我可以通过本地网络在 Windows 上的 Python 服务器和 OSX 上的客户端之间进行通信
最佳答案
创建监听器的方式应该没有区别。 您是否检查过内置 Windows 防火墙是否可以阻止连接(例如它是否关闭?)。 检查监听器是否正常工作的最佳方法是编写另一个在同一台机器上连接到它的小应用程序(或使用 telnet 或 netcat),这样防火墙就不会造成伤害。
关于python - 无法在windows7上查看创建的开放端口,但在mac上可以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21368251/