ip地址和端口号笔试题

进修社 人气:7.94K

我们如何从sin_addr取得此客户端的Ip地址和端口号呢?  在socket编程中,服务器端accept()等待一个客户端的连接,当连接成功后,accept拷贝客户端的.地址信息到sin_addr里面,我们如何从sin_addr取得此客户端的Ip地址和端口号呢?

ip地址和端口号笔试题

实际上,当sockaddr__family = AF_INET时,sockaddr = sockaddr_in。

据此,我们可以做一下转换,就可以利用 inet_ntoa() 来得到ip地址和端口号了:

int new_fd = accept(sock, &clientAddr, &sin_size);

if(new_fd<0)

{

char msg[64];

bzero(msg,sizeof(msg));

sprintf(msg,"accept failed");

log::outputSysErr(msg);

}

else

{

// 将sockaddr强制转换为 sockaddr_in

sockaddr_in sin;

memncpy(&sin, &clientAddr, sizoef(sin));

// 取得ip和端口号

sprintf(, inet_ntoa(_addr));

= _port;

= new_fd;

}