📄 获得本地ip地址winsockets dll 信息.txt
字号:
#pragma hdrstop
#include <condefs.h>
#include <stdio.h>
#include <windows.h>
LPSTR GetHostIpAddress();
//---------------------------------------------------------------------------
//---------获得本地IP地址、WinSockets Dll 信息
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
char *IP;
IP=GetHostIpAddress();
printf("ip=%s\n",IP);
getchar();
return 0;
}
//===========================================
LPSTR GetHostIpAddress()
{
struct hostent *thisHost;
struct in_addr in;
char MyName[80];
char *Ip,*ptr,hostname[80];
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(2,0);
//#define MAKEWORD(a, b) ((WORD)(((BYTE)(a)) | ((WORD)((BYTE)(b))) << 8))
err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
/* 出错 */
return NULL;
}
if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 0 )
{
/* Tell the user that we couldn't find a usable */
/* WinSock DLL. */
WSACleanup( );
return NULL;
}
printf("Windows Sockets info :\n\t%s\n\t%s\n\t%d\n",wsaData.szDescription,wsaData.szSystemStatus,wsaData.iMaxUdpDg);
if(gethostname(MyName,80)==SOCKET_ERROR) //得到标准主机名
{
WSACleanup( );
return NULL;
}
printf("\n标准主机名: %s\n\n",MyName);
if(!(thisHost=gethostbyname(MyName))) //根据主机名得到主机信息
{
WSACleanup( );
return NULL;
}
puts("根据主机名得到的主机信息\n");
printf("\th_name :%s\n", thisHost->h_name);
printf("\th_aliases :%s\n", thisHost->h_aliases);
printf("\th_addrtype :%d\n", thisHost->h_addrtype);
printf("\th_length :%d\n", thisHost->h_length);
printf("\th_addr_list[0] :%x\n\n", *((unsigned long *)thisHost->h_addr_list[0]));
puts("请稍等...");
if(!(thisHost=gethostbyaddr((unsigned char *)thisHost->h_addr_list[0],4,AF_INET))) //根据IP地址得到主机信息
{
WSACleanup( );
return NULL;
}
puts("\n根据IP地址得到的主机信息\n");
printf("\th_name :%s\n", thisHost->h_name);
printf("\th_aliases :%s\n", thisHost->h_aliases);
printf("\th_addrtype :%d\n", thisHost->h_addrtype);
printf("\th_length :%d\n", thisHost->h_length);
printf("\th_addr_list[0] :%x\n\n", thisHost->h_addr_list[0]);
memset((void *)&in,0,sizeof(in));
in.s_addr=*((unsigned long *)thisHost->h_addr_list[0]);
if(!(ptr=inet_ntoa(in)))
{
WSACleanup( );
return NULL;
}
WSACleanup( );
Ip=new char[strlen(ptr)+1];
strcpy(Ip,ptr);
return Ip;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -