场景:服务端建立socket后,需要知道是哪些客户端IP在发起请求,可以对请求的客户端进行限制等操作。
/*获取客户端的IP*/
#define NIPQUAD(addr) \
((unsigned char *)&addr)[0], \
((unsigned char *)&addr)[1], \
((unsigned char *)&addr)[2], \
((unsigned char *)&addr)[3]
client_sockfd = accept(server_sockfd, (struct sockaddr*) & client_address, &client_len);
char client_ip[MINLEN] = "";
sprintf(client_ip, "%u.%u.%u.%u", NIPQUAD(client_address.sin_addr.s_addr));