当前所在位置:珠峰网资料 >> 计算机 >> 计算机等级考试 >> 正文
从sockaddr中取得Ip地址和端口号
发布时间:2010/8/25 11:05:15 来源:城市学习网 编辑:ziteng
  在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;
  }
广告合作:400-664-0084 全国热线:400-664-0084
Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号
珠峰网 版权所有 All Rights Reserved