gpt4 book ai didi

c - 防止 getpeername() 返回 127.0.0.1

转载 作者:行者123 更新时间:2023-11-30 17:55:36 25 4
gpt4 key购买 nike

我有一个用 C 编写的服务器 (A) 和一个客户端 (B),运行在同一台 Linux 计算机上。服务器将一个端口绑定(bind)到 INADDR_ANY,客户端将另一个端口绑定(bind)到 INADDR_ANY。当另一个在另一台 Linux 计算机上运行的客户端 (C) 连接到服务器时,我希望服务器获取客户端 B 的 IP 地址并将其发送给客户端 C。

当我从服务器使用 getpeername() 时,它返回“127.0.0.1”,这是正确的,但我无法将此地址发送到客户端 C - 它无法连接到客户端 B该地址。

有什么聪明的方法可以获取客户端B的实际IP吗?如果更容易一些,我可以让每个客户端将其 IP 发送到服务器。

谢谢!

最佳答案

使用getifaddrs()要获取接口(interface)IP地址,手册页中有一个示例。请注意,您可以发送任何接口(interface)的 IP 地址,因为服务器是使用 INADDR_ANY 绑定(bind)的,因此它会监听所有接口(interface)。来自男人ip(7)

When INADDR_ANY is specified in the bind call, the socket will be bound to all local interfaces.

如果您想要公共(public) IP 地址,请参阅此问题:

Get public/external IP address?

关于c - 防止 getpeername() 返回 127.0.0.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14195972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com