【问题标题】:getpeername() returns my local host address when client is running on virtual machine当客户端在虚拟机上运行时,getpeername() 返回我的本地主机地址
【发布时间】:2016-12-19 14:04:39
【问题描述】:
  • 我在本地计算机上运行应用程序服务器,在虚拟机 (Windows Server 2012) 上运行应用程序客户端。
  • 我正在使用 NAT 网络设置。

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

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

任何建议将不胜感激。

【问题讨论】:

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

标签: c++ sockets vmware


【解决方案1】:

这并不奇怪。这几乎是NAT(网络地址转换)的定义。虚拟机地址在主机上被翻译成 on。

【讨论】:

    猜你喜欢
    • 2011-05-13
    • 2018-06-26
    • 2021-10-26
    • 2020-04-06
    • 2018-12-18
    • 2011-09-07
    • 2017-09-21
    • 2017-08-14
    • 1970-01-01
    相关资源
    最近更新 更多