设为首页 加入收藏

TOP

从sockaddr中取得Ip地址和端口号
2014-10-21 20:30:02 来源: 作者: 【 】 浏览:56
Tags:sockaddr 取得 地址 口号

  在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;


  }


  编辑特别推荐:


  等级免费资料下载


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇随机函数rand()的猜数字游戏 下一篇从STL中学习泛型编程

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: