Pio*_*ter 4 sockets virtualbox virtual-machine
我在 Windows 上有一个 java 客户端,在 Linux (VM) 上有一个 c++ 服务器。我正在尝试将客户端连接到服务器。但我不知道我应该使用什么 IP 地址。我的虚拟机配置是默认的,我有 NAT 网络。这是我从 ifconfig 得到的
enp0s3 Link encap:Ethernet HWaddr 08:00:27:97:86:ce
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0
inet6 addr: fe80::8651:2c9d:6683:e4fc/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:855910 errors:0 dropped:0 overruns:0 frame:0
TX packets:267095 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:940974525 (940.9 MB) TX bytes:24398399 (24.3 MB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:9710 errors:0 dropped:0 overruns:0 frame:0
TX packets:9710 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:875898 (875.8 KB) TX bytes:875898 (875.8 KB)
Run Code Online (Sandbox Code Playgroud)
这是我从 ipconfig 得到的:
Ethernet adapter Ethernet:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Wireless LAN adapter Po??czenie lokalne* 2:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Wireless LAN adapter Wi-Fi:
Connection-specific DNS Suffix . : home
Link-local IPv6 Address . . . . . : fe80::ddca:c63d:1b9e:6255%14
IPv4 Address. . . . . . . . . . . : 192.168.1.3
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.1.254
Ethernet adapter Po??czenie sieciowe Bluetooth:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Tunnel adapter Po??czenie lokalne* 4:
Connection-specific DNS Suffix . :
IPv6 Address. . . . . . . . . . . : 2001:0:9d38:90d7:10c9:14d5:da7f:e55c
Link-local IPv6 Address . . . . . : fe80::10c9:14d5:da7f:e55c%13
Default Gateway . . . . . . . . . : ::
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下方法连接:
socket = new Socket("10.0.2.15", 1236);
Run Code Online (Sandbox Code Playgroud)
当我在带有 localhost 的 VM 上使用客户端时,一切都很好。
所以我认为 Windows 和 VM 之间的连接有问题。
你应该阅读https://blogs.oracle.com/scoter/networking-in-virtualbox-v2
基本上,您必须配置端口转发。按照页面末尾的链接中提供的说明进行操作。
您应该使用的配置是:
Name: Rule 1 (or any actually)
Protocol: TCP
Host IP: 127.0.0.1
Host Port: 1236
Guest IP: (leave blank)
Guest Port: 1236
Run Code Online (Sandbox Code Playgroud)
来宾端口可以是任何端口,但必须与您在服务器应用程序上使用的端口相同。将访客 IP 留空。
现在,为了从主机连接到来宾,您应该在客户端应用程序中使用:
socket = new Socket("127.0.0.1", 1236);
Run Code Online (Sandbox Code Playgroud)
如果要使用此配置从来宾 VM 连接到主机,则应在客户端应用程序中使用:
socket = new Socket("10.0.2.2", 1236);
Run Code Online (Sandbox Code Playgroud)
或者,您也可以在桥接模式下使用 NIC,这也在文章中进行了解释。但是您应该正确配置路由器。
顺便说一句,不要忘记禁用或配置防火墙,否则它会阻止传入的连接。您可以使用以下命令禁用 ufw:
sudo ufw disable
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10472 次 |
| 最近记录: |