CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  网络编程

请问TCP连接中客户端如何得知自己ip?

楼主atuxpster(atuxpster)2006-02-15 11:31:02 在 VC/MFC / 网络编程 提问

客户机网卡配上了多个ip,此时调用connect与服务器连接.建立连接后怎样才能知道是本地哪个ip与服务器建立了连接? 问题点数:20、回复次数:2Top

1 楼striking(庸人自扰)回复于 2006-02-15 11:51:11 得分 20

连接后获取本地ip,,  
  sockaddr_in     Addr;  
  int   iLen   =   sizeof(   Addr   );  
   
  //m_hSocket   为连接建立后的socket  
  if(   getsockname(   m_hSocket,   (sockaddr*)&Addr,&iLen)   ==SOCKET_ERROR)  
  {  
           
          return   FALSE;  
  }  
  char   szIp[20];  
   
   
   
        strcpy(   szIp,   inet_ntoa(   Addr.sin_addr)   );  
   
   
  Top

2 楼xx_jj()回复于 2006-02-15 15:02:57 得分 0

int   GetIpAddress(const   CString   &sHostName,   CString   &sIpAddress)//获得本地IP  
  {  
                  //struct   hostent   FAR   *   lpHostEnt=gethostbyname(sHostName);  
                  //if(lpHostEnt==NULL)  
                  //{  
                  //                 //产生错误  
                  //                 sIpAddress=_T("");  
                  //                 return   GetLastError();  
                  //}  
                  ////获取IP  
                  //LPSTR   lpAddr=lpHostEnt->h_addr_list[0];  
                  //if(lpAddr)  
                  //{  
                  //                 struct   in_addr   inAddr;  
                  //                 memmove(&inAddr,lpAddr,4);  
                  //                 //转换为标准格式  
                  //                 sIpAddress=inet_ntoa(inAddr);  
                  //                 if(sIpAddress.IsEmpty())  
                  //                                 sIpAddress=_T("没有取得");  
                  //}  
                  return   0;  
  }  
  int   GetLocalHostName(CString   &sHostName) //获得本地计算机名称  
  {  
                  char   szHostName[256];  
                  int   nRetCode;  
                  nRetCode=gethostname(szHostName,sizeof(szHostName));  
                  if(nRetCode!=0)  
                  {  
                                  //产生错误  
                                  sHostName=_T("没有取得");  
                                  return   GetLastError();  
                  }  
                  sHostName=szHostName;  
                  return   0;  
  }Top

相关问题

  • ==客户端之间如何通过TCP/IP进行通讯?==
  • 在主机端如何及时准确的得知客户端已经断开连接(TCP)?
  • socket编程,在服务器端如何得知当前连接的客户端IP
  • SQLServer客户端默认协议NanePipe如何在程序中改为TCP/IP?
  • 怎样得知客户端的访问
  • winsock控件用tcp/ip协议时,客户端可以指定使用那个ip嘛?用bind方法不行。
  • 问一下:大家开发网络客户端都使用什么TCP/IP控件?(WinINet/FastNet/Indy...)
  • 在线解答:TCP服务端什么知道已连接的客户端的ip和端口?
  • 如何用程序实现SQL客户端网络连接的配置?如采用TCP/IP or 命名管道
  • ODBC连接sqlServer 选客户端协议有时Tcp/ip 通,name pipe不通,有时反之,为什么?

关键词

  • 连接
  • ip
  • sipaddress
  • shostname
  • lphostent
  • lpaddr
  • inaddr
  • addr
  • 建立
  • cstring

得分解答快速导航

  • 帖主:atuxpster
  • striking

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo