我正在学习python套接字编程。如果我在本地运行(服务器脚本和客户端脚本),则一切正常。但是,当我将服务器脚本移动到VM(Ubuntu 14.04)并从主机操作系统(Windows 7)运行客户端脚本时,出现此错误:
ConnectionRefusedError: [WinError 10061] No connection could be made because the
target machine actively refused it
当我尝试在VM中运行客户端时,它工作正常(除非我使用IP地址,即:192.168.1.6,否则必须在两个脚本中都使用它)。通过搜索,我发现Linux默认情况下不会激活防火墙。我做错什么了?
两台机器都可以看到对方(我在它们之间设置了Samba,可以对其他设备执行ping操作等)。这真让我感到困惑。
可能这可以解决问题。
您bind
在服务器代码中有一个呼叫,看起来像sock.bind(('127.0.0.1', 3333))
,其中3333是服务器端口号。将IP地址更改为空字符串,或'0.0.0.0'
,使其看起来像sock.bind(('', 3333))
。然后重新启动客户端。
原始bind
调用仅将服务器套接字绑定到环回接口(lo
),该环回接口仅在VM内有效。通过绑定到通配符地址(''
或'0.0.0.0'
),服务器将接受来自任何IP地址的连接。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句