Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 当客户端在虚拟机上运行时,getpeername()返回我的本地主机地址 我在本地计算机上运行应用程序服务器,在虚拟机上运行应用程序客户端(Windows server 2012) 我正在使用NAT网络设置_C++_Sockets_Vmware - Fatal编程技术网

C++ 当客户端在虚拟机上运行时,getpeername()返回我的本地主机地址 我在本地计算机上运行应用程序服务器,在虚拟机上运行应用程序客户端(Windows server 2012) 我正在使用NAT网络设置

C++ 当客户端在虚拟机上运行时,getpeername()返回我的本地主机地址 我在本地计算机上运行应用程序服务器,在虚拟机上运行应用程序客户端(Windows server 2012) 我正在使用NAT网络设置,c++,sockets,vmware,C++,Sockets,Vmware,当我从服务器调用getpeername()时,我得到的是主机地址,而不是虚拟机地址。客户端和服务器在不同的域上运行 我有点困惑,为什么当我的客户端从虚拟机(在不同的域上)进行通信时,这个getpeername()总是返回我的本地主机地址 任何建议都将不胜感激。这并不奇怪。这几乎就是NAT(网络地址转换)的定义。VMs地址在主机上转换为on。由于您使用的是NAT,服务器无法看到客户端的真实地址。如果您要执行数据包捕获(wireshark或类似),您还将看到从服务器看到的TCP连接没有原始客户端地址

当我从服务器调用
getpeername()
时,我得到的是主机地址,而不是虚拟机地址。客户端和服务器在不同的域上运行

我有点困惑,为什么当我的客户端从虚拟机(在不同的域上)进行通信时,这个
getpeername()
总是返回我的本地主机地址


任何建议都将不胜感激。

这并不奇怪。这几乎就是NAT(网络地址转换)的定义。VMs地址在主机上转换为on。

由于您使用的是NAT,服务器无法看到客户端的真实地址。如果您要执行数据包捕获(wireshark或类似),您还将看到从服务器看到的TCP连接没有原始客户端地址作为源。