如何提取本机IP地址?

sdhfeng 2006-04-19 10:51:22
如何获取本机IP地址,请教!
...全文
517 9 打赏 收藏 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jandyking 2006-04-27
  • 打赏
  • 举报
回复
在联机情况下才会得到自己的实际IP,要不得到的是自己localhost保留的IP127.0.0.1
huaqglxy2004 2006-04-27
  • 打赏
  • 举报
回复
上面的两个方法我编译通过,直接放一个按钮,把上面我给的任何一段代码放进去就OK了.不用上面那么烦的
huaqglxy2004 2006-04-27
  • 打赏
  • 举报
回复
方法一:

hostent *p;
char s[128];
char *p2;
//Get the computer name
gethostname(s, 128);
p = gethostbyname(s);
Memo1->Lines->Add(p->h_name);
//Get the IpAddress
p2 = inet_ntoa(*((in_addr *)p->h_addr));
Memo1->Lines->Add(p2);

方法二:

TPowersock *ps = new TPowersock(this) ;
Edit1->Text = ps->LocalIP;
delete ps;
soloxiao 2006-04-22
  • 打赏
  • 举报
回复
试一下这个吧:
---------------------------
#include <windows.h>
#include <winsock.h>
#include <stdio.h>

int main(int argc, char **argv)
{
WORD wVersionRequested;
WSADATA wsaData;
LPSTR szIPAddr;
hostent *p;

//Start up WinSock
wVersionRequested = MAKEWORD(1, 1);
if(WSAStartup(wVersionRequested, &wsaData))
{
printf("ERROR No.1!!! Program Terminate.");
return 0;
}

char s[128];
char *p2;
DWORD dwIPAddr;
//Get the computer name
if(gethostname(s, 128)==SOCKET_ERROR)
{
printf("ERROR No.2!!! Program Terminate.");
return 0;
}

p = gethostbyname(s);
if(!p)
{
printf("ERROR!!! Bad host lookup. Program Terminate.");
return 0;
}

printf("Local Computer Name: %s\n",s);
printf("Local Host Name: %s\n",p->h_name);
int i=0;
while(p->h_aliases[i])
{
printf(" %s\n",p->h_aliases[i]);
i++;
}


//Get the IpAddress
for(int i=0;p->h_addr_list[i]!=0;i++)
{
p2 = inet_ntoa(*((in_addr *)p->h_addr_list[i]));
printf("Local IP Adress: %s\n",p2);
}
return 0;
}
创造奇迹9999 2006-04-21
  • 打赏
  • 举报
回复
UP
sdhfeng 2006-04-20
  • 打赏
  • 举报
回复
我昨晚是在家的笔记本里试的显示的IP是127.0.0.1,而现在在办公室里测试了一下是显示的本机IP地址,这是为何?是否在家的笔记本未上网就不能显示自配的IP而是显示127.0.0.1?
daydayup234 2006-04-20
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=19523
sdhfeng 2006-04-20
  • 打赏
  • 举报
回复
再请教,上面代码我试了怎么返回的是127.0.0.1?我需要本机自配的IP地址。
constantine 2006-04-19
  • 打赏
  • 举报
回复
#include<winsock.h>
AnsiString GetLocalIP()
{
//Start up WinSock
WORD wVersionRequested = MAKEWORD(1,1);;
WSADATA wsaData;
WSAStartup(wVersionRequested, &wsaData);

hostent *p;
char s[128];
char *p2;
gethostname(s,128);//获取指定计算机的名字
p = gethostbyname(s);
p2 = inet_ntoa(*((in_addr *)p->h_addr)); //获取指定计算机的IP地址
WSACleanup();
return p2;
}

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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