getaddrinfo函数允许将一个主机名字和服务名字映射到一个地址。
服务器程序发布时,一般有两种形式:
1、通过服务名的形式发布;
2、不通过服务名发布,而直接指定端口。
AI_PASSIVE 参数表明是服务器用来接收服务的标志,AI_CANONNAME 参数与之相反;
从服务器程序的角度分析:
第一种(以服务名发布):
过程:(1)在/etc/services文件中添加程序名(即服务名)、端口号、protocol信息;
(2)指定getaddrinfo函数中的hint参数,hint.ai_flags = AI_PASSIVE,其他自己查;格式:getaddrinfo(主机名,服务名,hint,返回的ip地址链表); 注:主机名可以再/etc/hosts目录下修改;
(3)编译生成程序;
(4)运行。
第二种:
过程:(1)指定getaddrinfo函数中的hint参数,hint.ai_flags = AI_PASSIVE,其他省略;格式:getaddrinfo(主机名,端口号,hint,返回的ip地址链表); 注:主机名可以再/etc/hosts目录下修改;
(2)编译生成程序;
(3)运行。
从客户端程序的角度分析:
第一种(以服务名获取服务):
过程:(1)指定getaddrinfo函数中的hint参数,hint.ai_flags = AI_CANONNAME,其他自己查;格式:getaddrinfo(主机名,服务名,hint,返回的ip地址链表)
(2)在/etc/services文件中添加程序名(即服务名)、端口号、protocol信息;
(3)编译生成程序;
(4)运行。
第二种:
过程:(1)指定getaddrinfo函数中的hint参数,hint.ai_flags = AI_CANONNAME,其他省略;格式:getaddrinfo(主机名,端口号,hint,返回的ip地址链表)
(2)编译生成程序;
(3)运行。