
在socket编程中,服务器端accept()等待一个客户端的连接,当连接成功后,accept拷贝客户端的地址信息到sin_addr里面,我们如何从sin_addr取得此客户端的Ip地址和端口号呢?
实际上,当sockaddr_in.sin_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(info.ip, inet_ntoa(sin.sin_addr));
info.port = sin.sin_port;
info.sock = new_fd;
}
2017年计算机等级考试二级C++辅导:从sockaddr中取得Ip地址和端口号.doc正在阅读:
2017年计算机等级考试二级C++辅导:从sockaddr中取得Ip地址和端口号12-12
2020年宜昌中考时间是什么时候?|2021湖北宜昌什么时候中考07-03
[大学生敬老院社会实践报告3000字范文]2017大学生寒假敬老院社会实践报告范文06-12
中国移民要交多少个人所得税|法国移民的个人所得税介绍10-13
浙江中国计量学院是几本|浙江中国计量学院2017年考研成绩查询时间:2月15日09-16
2023年吉林银行总行社会招聘53人报名时间6月18日17:00截止05-31
沙发争夺战作文600字08-16
四年级优秀作文:巧穿针眼07-06
2017年江苏常州市武进区事业单位招聘报名时间及方法01-09
2022教师节献给老师的诗歌09-10