拷贝以下函数就OK 了简单吧
CString GetIp()
{
WORD wVersionRequested;
WSADATA wsaData;
char name[255];
CString ip;
PHOSTENT hostinfo;
wVersionRequested = MAKEWORD( 2, 0 ); if ( WSAStartup( wVersionRequested, &wsaData ) == 0 )
{ if( gethostname ( name, sizeof(name)) == 0)
{
if((hostinfo = gethostbyname(name)) != NULL)
{
ip = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list);
}
}
WSACleanup( );
}
return ip;
}
CString GetIp()
{
WORD wVersionRequested;
WSADATA wsaData;
char name[255];
CString ip;
PHOSTENT hostinfo;
wVersionRequested = MAKEWORD( 2, 0 ); if ( WSAStartup( wVersionRequested, &wsaData ) == 0 )
{ if( gethostname ( name, sizeof(name)) == 0)
{
if((hostinfo = gethostbyname(name)) != NULL)
{
ip = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list);
}
}
WSACleanup( );
}
return ip;
}
// if(ol1==0)
// {
// ol1++;
WSADATA wsa;
if(WSAStartup(MAKEWORD(2,2),&wsa)!=0)
{
AfxMessageBox("error wsa");
}
ones=socket(AF_INET,SOCK_STREAM,0);
if(ones==SOCKET_ERROR)
{
AfxMessageBox("error socket");
}
struct hostent *p;
p=gethostbyname(0); char hostaddr[50]; sprintf(hostaddr,"%d.%d.%d.%d",
(p->h_addr_list[0][0]& 0x00ff),
(p->h_addr_list[0][1]& 0x00ff),
(p->h_addr_list[0][2]& 0x00ff),
(p->h_addr_list[0][3]& 0x00ff)); SetDlgItemText(IDC_IP,hostaddr);
char *pszAddr=new char[50];
pszAddr=inet_ntoa(*(struct in_addr *)p->h_addr_list[0]);//pszAddr就是本机的IP
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans\0000]
"IPAddress"="XXX.XXX.XXX.XXX"
build有以下错误,这是为什么呢?
Try8Dlg.obj : error LNK2001: unresolved external symbol _WSACleanup@0
Try8Dlg.obj : error LNK2001: unresolved external symbol _inet_ntoa@4
Try8Dlg.obj : error LNK2001: unresolved external symbol _gethostbyname@4
Try8Dlg.obj : error LNK2001: unresolved external symbol _gethostname@8
Try8Dlg.obj : error LNK2001: unresolved external symbol _WSAStartup@8
Debug/Try8.exe : fatal error LNK1120: 5 unresolved externals
Error executing link.exe.
创建工程时要选择 winsock程序
不要重建工程选菜单 Project->Settings 选择 link,在object/library modules里面加上 ws2_32.lib然后再编译