接受后如何确定使用哪个IP地址?

时间:2011-12-19 10:24:15

标签: c++ c

如果我写了一个绑定到通配符地址(INADDR_ANY)的服务器,如何确定客户端连接到哪个IP地址?

在成功接受调用之后,我尝试了以下代码,但它只返回0.0.0.0。

inet_ntop(AF_INET, &server_address.sin_addr, s, sizeof(s));

2 个答案:

答案 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来获取它。