0

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

4

3 回答 3

6

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

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

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

详情请阅读这里

于 2013-05-23T14:21:17.600 回答
3

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

于 2013-05-23T14:11:54.923 回答
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);
于 2016-07-20T06:42:08.800 回答