如何得到本机ip地址
解决方案 »
- 2010春节最强爆笑(转)
- InValidateRect()和InValidate()有何不同?
- 为什么VC返回的BSTR类型用PB的String类型接收后出现汉字乱码,英文正常??????
- (急)怎么样正确的调用ocx控件
- 把基础类没解决的问题发到这里再求教:动态创建的Edit控件的数据交换问题
- 执行CRecordset::AddNew()之后增加的记录是在记录库的哪个位置,有说法吗??
- 在次请众位高手帮忙 有难度的问题 给高分
- 紧急求助各位高手!!!!在线等待
- 请问如何动态的改变应用程序的图标,一定给分
- 设置背景后,TEXTOUT为什么看不到?
- 对于BHO来说这两种注册有什么区别?
- 动态库的调试版本和发行版本有什么不同?
char szHostName[256];
hostent *host;
in_addr inaddr;
//以下用于获取本机IP地址
gethostname(szName,255);
host=gethostbyname(szName);
if(host)
inaddr.s_addr=*((unsigned long*)host->h_addr_list[0]);
else
ShowMessage("获取本机IP失败!");
hostent FAR* gethostbyname(const char FAR*name);
name 为表示准备查找的主机的友好名。如果成功返回一个指向hosten结构的指针。用法楼上说的很清楚啦。
struct hostent{
char FAR* h_name;//正式的主机名
char FAR* FAR* h_aliases;
short h_addrtype;//返回的地址家族
short h_length;//对h_addr_list中地址长度定义
shor FAR* FAR* h_addr_list;//IP地址组成的数组,可能一个主机有几个ip所以是数组
}
char szHostName[50] = {0};
CString ip;
if( gethostname (szHostName, sizeof(szHostName)) == 0)
{
hostent* hostinfo = gethostbyname(szHostName) ;
if( hostinfo != NULL )
{
ip = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list);
}
}
CString szServerIP = ip;
CString sIP;//用于存放本机IP
char hostname[200];//用于存放本机名字
int nRetCode;//返回值
//获取本机名称
nRetCode = gethostname(hostname,200);if (nRetCode != 0) {
// An error has occurred
int err=WSAGetLastError();
CString message;
message.Format(_T("错误:%d"),err);
AfxMessageBox(message);
} //获取本机IP
//使用 GetAddressByName
struct hostent FAR *lpHostEnt = gethostbyname (hostname);
if (lpHostEnt == NULL) {
// An error occurred.
int err=WSAGetLastError();
CString message;
message.Format(_T("错误:%d"),err);
}
LPSTR lpAddr = lpHostEnt->h_addr_list[0];
if (lpAddr) {
struct in_addr inAddr;
memmove (&inAddr, lpAddr, 4);
sIP = inet_ntoa (inAddr);
if (sIP.IsEmpty())
AfxMessageBox("wrong");
}
#include <wsipx.h>
#include <wsnwlink.h>char * get_ip()
{ WORD wVersionRequested = MAKEWORD(1, 1);
WSADATA wsaData; if (WSAStartup(wVersionRequested, &wsaData))
return 0;
char hostname[256];
int res = gethostname(hostname, sizeof(hostname));
if (res != 0)
return 0; hostent* pHostent = gethostbyname(hostname);
if (pHostent==NULL)
return 0; hostent& he = *pHostent;
sockaddr_in sa;
memcpy ( &sa.sin_addr.s_addr, he.h_addr_list[0],he.h_length);
WSACleanup(); return inet_ntoa(sa.sin_addr);
}