如何获得ip

来源:百度知道 编辑:UC知道 时间:2024/05/30 23:09:23
我是用ACE进行网络程序的开发,系统分为两端,一个是server,一个是client,我的想法是client发送请求,然后server应答,在应答之前要提取client的ip地址,那么如何获得对方的ip呢?

我的是UNIX环境,不知道你的是什么环境,但是套接字都是平台通用的,简单的说一下以下的方法或许对你有帮助
在对方发送过来的连接请求的时候,你的accept函数中提供的struct sockaddr结构体client_addr被填充,sin_size是这个结构体的大小

struct sockaddr_in client_addr;
int sin_size;
sin_size = sizeof(struct sockaddr_in);
if (accept(server_sockfd, (struct sockaddr*)&client_addr, &sin_size)) < 0) {
fprintf(stderr, "accept error\n");
exit(1);
}
/*然后输出这个被连接的IP地址和端口号*/
/*其中用到了两个转换函数inet_ntoa和ntohs,你可以从网上查找下他们的具体资料*/
fprintf(stdout, "Server: get connection from %s:%d\n",
inet_ntoa(client_addr.sin_addr),
ntohs(client_addr.sin_port));