int get_sender_ip(struct sockaddr_in * addr_send, unsigned int *ip_hex)
{
int sock_addr;
int ret, len_addr;
struct sockaddr_in addr_local;
sock_addr = socket(AF_INET, SOCK_DGRAM, 0);
if(0 > sock_addr) {
WSACleanup();
return -1;
}
ret = connect(sock_addr,(struct sockaddr *)addr_send, sizeof(struct sockaddr_in));
if (0 > ret) {
WSACleanup();
return -1;
}
len_addr = sizeof(struct sockaddr);
ret = getsockname(sock_addr, (struct sockaddr *)&addr_local, &len_addr);
if (0 > ret) {
ret = GetLastError();
WSACleanup();
return -1;
}
closesocket(sock_addr);
// ip 整形和字符串格式
*ip_hex = addr_local.sin_addr.S_un.S_addr;
//buf_ip = inet_ntoa(addr_local.sin_addr);
return ret;
}