如果我写了一个绑定到通配符地址(INADDR_ANY
)的服务器,如何确定客户端连接到哪个IP地址?
在成功接受调用之后,我尝试了以下代码,但它只返回0.0.0.0。
inet_ntop(AF_INET, &server_address.sin_addr, s, sizeof(s));
答案 0 :(得分:4)
如How to determine IP used by client connecting to INADDR_ANY listener socket in C中所述,使用getsockname,它为您提供连接所绑定的套接字(在本地级别)。
这适用于C,但适用于C ++ to。
答案 1 :(得分:0)
accept系统调用的地址类型为struct sockaddr_in或struct sockaddr_in6。
客户地址将存储在那里。
你可以使用inet_ntoa或inet_ntop来获取它。