我有一台运行在同一台Linux机器上的服务器(A)和一个用C语言编写的客户机(B)。 服务器将端口绑定到INADDR_ANY,客户端将另一个端口绑定到INADDR_ANY。 当其他客户端(C),这是另一 Linux机器上运行,连接到服务器,我希望服务器获取客户端B的IP地址,并将其发送给客户端C.防止从getpeername()返回127.0.0.1
当我使用getpeername()从服务器,它返回“127.0.0.1”这是正确的,但我不能发送这个地址给客户端C-它将无法连接到客户端B与该地址。
有什么聪明的方法来获得客户端B的实际IP? 如果稍微容易些,我可以让每个客户端发送它的IP给服务器。
谢谢!
mux- getifaddrs()的问题是一台计算机可能有多个IP地址,所以我只是不能捕捉到第一个不是127.0.0.1的IP。 – bomba6
@ bomba6我认为任何人都会这样做,因为服务器绑定到INADDR_ANY,它会监听所有接口,以便接收数据包。 – iabdalkader
感谢您的澄清。但客户端C位于另一个网络上的另一台计算机上。我没有冒险返回“内部”IP地址? – bomba6