我想用一个客户端程序获取客户端机器的IP,我要求用户输入用户名、密码、但是返回给服务器的却是用户名、密码和IP地址。
有朋友告诉我两个API,但是我依然不知道应该把这两个API放到什么地方去?
两个API如下
GetHostName
gethostbyname兩個api就可以搞定
//下面的function把傳入的host name(計算機名稱)轉成网絡字節序的值.
Name2Ip(LPCSTR lpName)
{
BOOL name=FALSE;
if((lpName==NULL) ||(strlen(lpName)<1))
return htonl(ADDR_ANY);
for(int i=0;lpName[i];i++)
{
if (!isdigit(lpName[i])&&lpName[i]!=‘.‘)
{
name=TRUE;
break;
}
}
if(!name)
return inet_addr(lpName);
else
{
struct hostent *host=gethostbyname(lpName);
if(host==NULL)
return htonl(ADDR_ANY);
return *(long *)host->h_addr;
}
}
//要得到本地的ip,用下面的方法
char lpText[255];
gethostname(lpText,255);
this->m_LocalAddr.sin_addr.s_addr=Name2Ip(lpText);
这是那个高手给我的API,麻烦大侠指教!怎么把API放置好才能获取IP.
有朋友告诉我两个API,但是我依然不知道应该把这两个API放到什么地方去?
两个API如下
GetHostName
gethostbyname兩個api就可以搞定
//下面的function把傳入的host name(計算機名稱)轉成网絡字節序的值.
Name2Ip(LPCSTR lpName)
{
BOOL name=FALSE;
if((lpName==NULL) ||(strlen(lpName)<1))
return htonl(ADDR_ANY);
for(int i=0;lpName[i];i++)
{
if (!isdigit(lpName[i])&&lpName[i]!=‘.‘)
{
name=TRUE;
break;
}
}
if(!name)
return inet_addr(lpName);
else
{
struct hostent *host=gethostbyname(lpName);
if(host==NULL)
return htonl(ADDR_ANY);
return *(long *)host->h_addr;
}
}
//要得到本地的ip,用下面的方法
char lpText[255];
gethostname(lpText,255);
this->m_LocalAddr.sin_addr.s_addr=Name2Ip(lpText);
这是那个高手给我的API,麻烦大侠指教!怎么把API放置好才能获取IP.
button的onclick事件里写
char lpText[255];
gethostname(lpText,255);
this->m_LocalAddr.sin_addr.s_addr=Name2Ip(lpText);
哎,不对支歌好像不是delphi的代码呀
不过原理 一样
看一下帮助关于这个函数的