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连接没有原始客户端地址作为源。