我做了端口转发:我将服务器放在虚拟机上,并将客户端从主机连接到虚拟机。效果很好。
但是现在,当我尝试反向操作时,却没有。
我要做的第一件事是使用以下参数进行端口转发:
成功完成。
之后,当我这样做时(服务器脚本,但在主机上的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虚拟机。防火墙已禁用。我不想使用桥接连接。
答案 0 :(得分:0)
Vmware端口转发只是一个由vmware服务创建的进程,具有以下参数:
这就是工作,仅此而已。
在开始端口转发时,此过程已启动并在主机上分配了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。