您现在的位置:汉网天下 > 认证考试 > 等级考试 > 三级 >

从sockaddr中取得Ip地址和端口号

来源:未知  作者:未知 责任编辑:汉网天下 发表时间:2012-01-06 12:27 点击:

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

  }

    顶一下
    (0)
    0%
    踩一下
    (0)
    0%

    相关文章>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      验证码:点击我更换图片
      最新评论 更多>>
      广告服务 - 关于汉网天下 - 客户服务 - 版权申明 - 友情链接 - 网站地图 - TAG标签 - RSS订阅
      Copyright © 2009-2011 hanwangtx.com 汉网天下技术 版权所有
      友情联系QQ:530275807
      滇ICP备09010630号