socketConnection = accept(ListeningSocket, (SOCKADDR*)&ClientAddr, &ClientAddrLen);//客户端套接字,如何获取客户端IP
时间: 2024-03-03 22:50:35 浏览: 67
获取客户端IP
4星 · 用户满意度95%
在调用 `accept` 函数后,客户端的套接字描述符会被返回,同时客户端的地址信息也会被存储在 `ClientAddr` 变量中,包括客户端的 IP 地址和端口号。
可以通过以下代码获取客户端的 IP 地址:
```c
char ClientIP[INET_ADDRSTRLEN];
inet_ntop(AF_INET, &ClientAddr.sin_addr, ClientIP, INET_ADDRSTRLEN);
```
其中,`inet_ntop` 函数将 IPv4 地址从二进制格式转换为文本格式,第一个参数为地址族,这里指定为 `AF_INET`,表示 IPv4 地址;第二个参数为指向存储 IP 地址的二进制值的指针,这里指定为 `&ClientAddr.sin_addr`,即客户端的 IP 地址;第三个参数为指向存储转换后 IP 地址的文本字符串的指针,这里指定为 `ClientIP`。
获取客户端 IP 地址的完整代码如下:
```c
SOCKET socketConnection;
SOCKADDR_IN ClientAddr;
int ClientAddrLen = sizeof(ClientAddr);
socketConnection = accept(ListeningSocket, (SOCKADDR*)&ClientAddr, &ClientAddrLen);
char ClientIP[INET_ADDRSTRLEN];
inet_ntop(AF_INET, &ClientAddr.sin_addr, ClientIP, INET_ADDRSTRLEN);
printf("客户端IP:%s\n", ClientIP);
```
阅读全文