如何使用WinSock2和C获取连接客户端的IP地址?

时间:2013-05-23 14:05:51

标签: c ip client winsock

我想获取刚刚连接到运行WinSock2的服务器的客户端的IP地址。我正在使用C.

3 个答案:

答案 0 :(得分:5)

您可以通过拨打accept()来获取客户端的IP地址和端口。

只需将适当的数据传递到最后两个参数中即可。

struct sockaddr_in sa = {0}; /* for tcp/ip */
socklen_t socklen = sizeof sa;
... = accept(..., (struct sockaddr *) &sa, &socklen);

详情please read here

答案 1 :(得分:1)

我自己没有这样做,但请看getpeername。看起来这就是你需要的。

答案 2 :(得分:0)

这项工作适用于我 winsock2 。不需要 getpeername

SOCKET newConnection;
SOCKADDR_IN addr;
int addrlen = sizeof(addr);

newConnection = accept(sListen, (SOCKADDR*)&addr, &addrlen);

char *ip = inet_ntoa(addr.sin_addr);
printf("Accepted Connection from :  %s", ip);