如何解决如何通过虚拟机连接到主机上的套接字服务器?
我做了端口转发:我将服务器放在虚拟机上,并将客户端从主机连接到虚拟机。效果很好。
但是现在,当我尝试反向操作时,却没有。
我要做的第一件事是使用以下参数进行端口转发:
- 主机端口:35001
- 前进港口:35001
- 虚拟机ip:192.168.40.130
成功完成。
之后,当我这样做时(服务器脚本,但在主机上的cmd(shell)上):
app.use("/views2",express.static(__dirname + "/views2"));
我收到此错误:
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(("0.0.0.0",35001))
我相信这是因为在端口35001上监听了一个进程。
在转发端口后,这是VMware(NAT)在监听35001(我使用netstat找出来了)。
那么如何在主机上建立服务器,使其侦听端口35001,并能够从虚拟机连接到服务器?
它是Windows 10专业版,python3,Windows 7虚拟机。防火墙已禁用。我不想使用桥接连接。
解决方法
Vmware端口转发只是一个由vmware服务创建的进程,具有以下参数:
- 它在您的主机上运行
- 分配TCP端口35001
- 收听传入的TCP连接
- 将它们转发到访客计算机IP的TCP 35001
这就是工作,仅此而已。
在开始端口转发时,此过程已启动并在主机上分配了35001 TCP端口。
这就是为什么主机上的python脚本不起作用的原因。无法再次分配主机的35001 TCP端口。
VMware创建一个虚拟网络。您的虚拟机将看到该虚拟网络。没有以太网卡属于它,但看起来好像是。它的IP地址范围为192.168.40.0-192.168.40.255。另外,您的主机也位于此虚拟网络上,可能具有IP 192.168.40.1。您的来宾计算机将其视为路由器。
对于仅主机,桥接或NATted虚拟网络类型来说是这样。虚拟网络类型只会影响主机对数据包的处理方式,从而在虚拟网络和物理网络之间转发数据包。
要在主机上运行服务器(您可以从客户机连接),则不需要任何端口转发。只需将其停止,即可运行您的python脚本。然后,从您的来宾连接192.168.40.1:35001。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。