我想获取刚刚连接到运行WinSock2的服务器的客户端的IP地址。我正在使用C.
答案 0 :(得分:5)
您可以通过拨打accept()
来获取客户端的IP地址和端口。
只需将适当的数据传递到最后两个参数中即可。
struct sockaddr_in sa = {0}; /* for tcp/ip */
socklen_t socklen = sizeof sa;
... = accept(..., (struct sockaddr *) &sa, &socklen);
答案 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);