VC++网络编程 1 本机网络编程

1 本机网络信息编程

1.1获取本机计算机名称和IP

1.1.1 gethostname函数

作用:检索本地计算机的标准名称
函数声明:

int gethostname(char*name,int namelen);

参数介绍:

  • name:指向接收本地主机名的缓冲区指针
  • namelen name所指缓冲区长度 单位字节
  • 返回值 0:没有错误 ;其它:SOCKET_ERROR 可使用WSAGetLastError来检出特定的错误码;

示例:

char name[128];
if(gethostname(name,128)==0)
{
  printf("%s",name);
}

1.1.2 gethostbyname函数

作用:从主机数据库中检索出与主机名对应的主机信息
函数声明:

hostent *gethostbyname(const char*name);

参数介绍:

  • name本地计算机名称 可用gethostname获得
  • 返回值 如果没有错误则返回hostnet结构的指针,出现出错返回空指针,可使用WSAGetLastError来检出特定的错误码,
    hostnet结构体定义
typeder struct hostnet{
  char*h_name;        //主机的正式名称
  char** h_aliases;   //指向以NULL结尾的主机别名数组
  short h_addrtype;   //返回地址类型
  short h_length;     //ip地址的长度
  char ** h_addr_list;//用来保存多个ip地址
}HOSTENT,*PHOSTENT,*LPHOSTENT;

实例

	char szHostName[128];
	char szT[20];

	if (gethostname(szHostName, 128) == 0)
	{
		// Get host adresses
		
		struct hostent * pHost;
		int i;
		pHost = gethostbyname(szHostName);
		for (i = 0; pHost != NULL && pHost->h_addr_list[i] != NULL; i++)
		{
			char str[100];
			char addr[20];
			int j;
			LPCSTR psz = inet_ntoa(*(struct in_addr *)pHost->h_addr_list[i]);
			printf("%s",psz);
		}

	}

1.1.3 inet_ntoa函数

作用:讲一个十进制的网络字节序转为点分十进制IP格式的字符串
声明:

char* inet_ntoa(struct in_addr in);

参数介绍:

  • 参数in:表示Internet主机地址的结构,
  • 返回值:如果函数正确,就返回一个字符指针,指向一块存储着点分十进制格式IP地址的静态缓冲区,如果错误则返回NULL
    实例参考上一个

1.2获取本机子网IP地址和子网掩码

子网掩码又叫做网络掩码、地址掩码、子网络遮罩,用来指明一个IP地址的哪些位标识的是主机所在的子网以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,必须与ip地址结合使用,
子网掩码的作用 将某个IP地址划分成网络地址和主机地址两部分
GetAdaptersInfo函数
声明

ULONG GetAdaptersInfo(PIP_ADAPTER_INFO pAdapterInfo,PULONG pOutBufLen);

参数介绍:

  • pAdapterInfo指向接收IP适配器信息结构链表的缓冲区指针(指向的是一个链表节点的指针)
  • pOutBufLen指向ulong变量的指针,该变量指定pAdapterInfo参数指向的缓冲区大小
posted @ 2022-05-27 18:08  simp00  阅读(118)  评论(0编辑  收藏  举报