初学Sockets编程(二) 关于名称和地址族

简介:

 这一章的核心内容是getaddrinfo()函数。

 

int getaddrinfo(constchar*hostStr, constchar* serviceStr, conststruct addrinfo *hints, 
struct addrinfo **results)
//需要配合下面函数进行使用
void freeaddrinfo(struct addrinfo *addrList) //释放创建的结果链表
const char *gai_strerror(int errorCode) //如果getaddrinfo返回非0值,可以描述出错的是什么

 

  含义:

  hostStr    主机名称或地址,以NULL结尾的字符串

  serviceStr    服务名称或端口号,以NULL结尾的字符串

  hints     要返回信息的种类,可以实现选择

  results   存储一个指向包含结果的链表的指针

 对于addrinfo结构,如下所示:

复制代码
struct addrinfo {
  int ai_flags;//Flags to control info resolution
  int ai_family;//Family:AF_INET,AF_INET6,AF_UNSPEC
  int ai_socktype;//Socket type:SOCK_STREAM,SOCK_DGRAM
  int ai_protocol;//Protocol: 0(default) or IPPROTO_XXX
  socklen_t ai_addrlen;//Length of socket address ai_addr
  struct sockaddr *ai_addr;//Socket address for socket
  char*ai_canonname;//Canonical name
  struct addrinfo *ai_next;//Next addrinfo in linked list
};
复制代码

 

  利用getaddrinfo()函数编写出的SetupTCPClientSocket()和SetupTCPServerSocket()可以很方便地隐藏IPv4和IPv6地址的差异,根据它重写的TCPEchoClient.c和TCPEchoServer.c就可以同时处理两种类型的地址了。


  本章最后还提到了从Internet地址获取主机名称的getnameinfo()和获取自己主机名称的gethostname(),不再详述。




本文转自五岳博客园博客,原文链接:www.cnblogs.com/wuyuegb2312/archive/2011/08/04/2127913.html,如需转载请自行联系原作者

目录
相关文章
|
7月前
|
Python
Python网络编程基础(Socket编程)绑定地址和端口
【4月更文挑战第9天】在UDP服务器编程中,我们首先需要创建一个UDP套接字,然后绑定一个本地地址和端口,以便客户端可以通过这个地址和端口与我们的服务器进行通信。下面,我们将详细讲解如何绑定地址和端口。
|
6月前
|
域名解析 网络协议 算法
TCP/IP 协议族的核心
TCP/IP 协议族的核心
|
物联网 Linux 开发者
Exec 函数族简介|学习笔记
快速学习 Exec 函数族简介
Exec 函数族简介|学习笔记
|
域名解析 网络协议 测试技术
第三章 TCP/IP ip地址概念与应用
前言:学习ip地址的概述与应用
103 0
第三章 TCP/IP ip地址概念与应用
|
网络协议 测试技术
第三章TCP/IPip地址概念与应用
一 什么是ip地址 IP地址是用来唯一标识互联网上计算机的逻辑地址,让电脑之间可以相互通信,每台连网计算机都依靠IP地址来互相区分,相互联系。 二 什么是域名 由于IP地址是数字标识,使用时难以记忆和书写,因此在IP地址的基础上又发展出一种符号化的地址方案,来代替数字型的IP地址。每一个符号化的地址都与特定的IP地址对应,这样网络上的资源访问起来就容易得多了。这个与网络上的数字型IP地址相对应的字符型地址,就被称为域名。
105 0
|
网络协议 Unix
UNIX 域套接字概述
UNIX 域套接字概述
168 0
|
网络协议 Unix Linux
UNP总结 Chapter 12~14 IPv4与IPv6的互操作性、守护进程和inet超级服务器、高级I/O函数
一、IPv4与IPv6的互操作性 1.IPv4客户与IPv6服务器 拥有双重协议栈的主机的一个基本特性就是:其上运行的IPv6服务器既能应付IPv4客户,又能应付IPv6客户。这是通过使用IPv4映射的IPv6地址实现的。
919 0