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

简介: 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参数指向的缓冲区大小
目录
相关文章
|
2月前
|
网络协议 算法 Java
【Java网络编程】网络编程概述、UDP通信(DatagramPacket 与 DatagramSocket)
【Java网络编程】网络编程概述、UDP通信(DatagramPacket 与 DatagramSocket)
40 3
|
15天前
|
安全 Java 网络安全
【认知革命】JAVA网络编程新视角:重新定义URL与URLConnection,让网络资源触手可及!
【6月更文挑战第22天】JAVA网络编程中,URL代表统一资源定位符,用于表示网络资源地址。通过`new URL("address")`创建URL对象,可解析和访问其组件。URLConnection是与URL建立连接的接口,用于定制HTTP请求,如设置GET/POST、超时及交换数据。
|
15天前
|
存储 分布式计算 网络协议
什么是网络编程?网络编程的三要素是什么?
在网络通信协议下,不同计算机上运行的程序,进行的数据传输。
12 1
|
2月前
|
网络协议 安全 Java
网络编程、网络编程的三要素、TCP/UDP通信、三次握手和四次挥手
网络编程、网络编程的三要素、TCP/UDP通信、三次握手和四次挥手
35 1
网络编程、网络编程的三要素、TCP/UDP通信、三次握手和四次挥手
|
2月前
|
网络协议 算法 网络性能优化
Qt TCP网络上位机的设计(通过网络编程与下位机结合)
Qt TCP网络上位机的设计(通过网络编程与下位机结合)
Qt TCP网络上位机的设计(通过网络编程与下位机结合)
|
2月前
|
网络协议 Python
Python 网络编程实战:构建高效的网络应用
【5月更文挑战第18天】Python在数字化时代成为构建网络应用的热门语言,因其简洁的语法和强大功能。本文介绍了网络编程基础知识,包括TCP和UDP套接字,强调异步编程、数据压缩和连接池的关键作用。提供了一个简单的TCP服务器和客户端代码示例,并提及优化与改进方向,鼓励读者通过实践提升网络应用性能。
40 6
|
1月前
网络编程套接字(1)—网络编程基础
网络编程套接字(1)—网络编程基础
14 0
|
2月前
|
网络协议 Linux 网络架构
|
2月前
|
存储 网络协议 Unix
【Linux 网络】网络编程套接字 -- 详解
【Linux 网络】网络编程套接字 -- 详解
|
2月前
|
网络协议 Java Linux
【探索Linux】P.29(网络编程套接字 —— 简单的TCP网络程序模拟实现)
【探索Linux】P.29(网络编程套接字 —— 简单的TCP网络程序模拟实现)
26 0