求教 如何获取windows中当前使用的IP地址

sexinshanghai 2013-01-13 08:32:51
小弟现在windows平台下写了个程序,要发消息给服务器,消息中要携带我当前计算机的IP地址来作为机器的标识。但是小弟使用GetAdaptersInfo这个接口只能得到一串网络适配器信息的列表,却不知道我的程序是用哪个IP与服务器通信的。各位大牛们有什么好的方法么?谢谢各位啦。

...全文
283 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
z8323664 2013-01-23
  • 打赏
  • 举报
回复
引用 3 楼 delete635 的回复:
struct hostent* phosten; phosten = gethostbyname(PCnameBuffer); 你主机的Ip地址=inet_ntoa(*(struct in_addr *)phosten->h_addr_list;
+++3楼正解。 多网卡你可以根据下标获得啊 ,他是一个链表吧phosten->h_addr_list[i];
sexinshanghai 2013-01-18
  • 打赏
  • 举报
回复
我的主机是多网卡的。所以...不过还是谢谢各位啊
淡蓝苍穹 2013-01-15
  • 打赏
  • 举报
回复
引用 3 楼 delete635 的回复:
struct hostent* phosten; phosten = gethostbyname(PCnameBuffer); 你主机的Ip地址=inet_ntoa(*(struct in_addr *)phosten->h_addr_list;
3楼正解。
delete635 2013-01-14
  • 打赏
  • 举报
回复
struct hostent* phosten; phosten = gethostbyname(PCnameBuffer); 你主机的Ip地址=inet_ntoa(*(struct in_addr *)phosten->h_addr_list;
zwfgdlc 2013-01-13
  • 打赏
  • 举报
回复
难道你的电脑还是多个网卡?
MoreWindows 2013-01-13
  • 打赏
  • 举报
回复

//获得本地计算机名和IP地址
CString m_IP;//IP地址临时变量
 //获得本地计算机名
 char PCnameBuffer[128];
 if(0==gethostname(PCnameBuffer,128))
 {
  m_PCname=PCnameBuffer;
  //获得本地IP地址
  struct hostent* pHost;
  int i;
  pHost=gethostbyname(PCnameBuffer);//pHost返回的是指向主机的列表
  for (i=0;pHost!=NULL&&pHost->h_addr_list[i]!=NULL;i++)
  {
   LPCSTR psz = inet_ntoa(*(struct in_addr *)pHost->h_addr_list[i]);//得到指向ip的psz变量
   m_IP += psz;   
  }
  m_LocalIP=m_IP;
 }
 else
 {
  AfxMessageBox("获取本地IP失败!");
  return;
 }
看看这个符合你的要求不?

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧