linux环境编程中ruptime示例中的getaddrinfo
来源:互联网 发布:绣花软件 编辑:程序博客网 时间:2024/05/21 17:17
前几天在看linux环境编程中的套接字时,看到了ruptime的示例。于是乎自己将示例在本机演示了一翻。
刚开始怎么弄都不对,服务器端的getaddrinfo(host,"ruptime",&hint,&ailist)老是报错,提示没有提供该服务。
自己一分析也觉得纳闷,getaddrinfo是怎么将ruptime和端口对应起来的呢,我是不是在启动该服务器前要先在系统中为该服务注册相应的端口呢?
通过对getaddrinfo进一步的学习和网上查询,发现getaddrinfo其实是读取了host主机的网络配置信息,而这些信息在linux环境编程16.3.3地址查询一节的开始说的很明白,以下引用原文
“这些函数返回的网络配置信息可能存放在许多地方。它们可以保存在静态文件中(如/etc/hosts,/etc/services等),或者可以同命名服务器管理,例如DNS或者NIS。无论这些信息放在何处,这些函数同样能够访问它们。”
看来服务器端的getaddrinfo函数是访问的本机的/etc/hosts或/etc/services文件,把开/etc/services文件一看,里面的确注册了很多服务,格式如下:
nfs 2049/tcp #Network File System
nfs 2049/udp #Network File System
说明本机中nfs注册的端口是2049,提供TCP,UDP两种不同协议的服务。
于是乎我在/etc/services文件中追加了以下内容:
ruptime 4000/tcp # ruptime 示例
再次运行服务器程序,一切正常。
int getaddrinfo(
const char* host
const char* service
const struct addrinfo* hints,
struct addrinfo** res
);
所以我理解的getaddrinfo是去host读取/etc/services(也可能是/etc/hosts)文件并找到service,得到它的端口号和支持的协议,经过hints过滤后放到res中。
参考链接:
http://www.linuxidc.com/Linux/2011-08/40104.htm
http://www.cppblog.com/sleepwom/archive/2010/07/02/119136.aspx
- linux环境编程中ruptime示例中的getaddrinfo
- Linux 编程 之 【socket】 getaddrinfo
- linux socket编程客户端模型(用getaddrinfo)
- linux socket编程服务端模型(用getaddrinfo)
- TCP/IP编程中协议无关性的函数getaddrinfo()
- TCP/IP编程中协议无关性的函数getaddrinfo()
- TCP/IP编程中协议无关性的函数getaddrinfo()
- eclipse中RMI编程环境的搭建与编程示例
- linux中多线程编程的简单示例
- UNIX环境编程学习笔记------编程实例----域名解析函数的函数原型即getaddrinfo()函数原型
- Linux 环境中的 Java JNI 编程
- Linux 系统中 Python 编程环境
- Linux 系统中 NumPy 编程环境
- Linux 系统中 SciPy 编程环境
- Linux 系统中 Matplotlib 编程环境
- Linux 系统中 scikit-learn 编程环境
- Linux 系统中 hmmlearn 编程环境
- Linux 系统中 python-opencv 编程环境
- 深刻解析 Android 的 AIDL 界面(1)
- scroll view 工作原理
- DAPM之一:概述
- java 基础
- android sdk 编译--如何将源代码加入android.jar,以及make原理
- linux环境编程中ruptime示例中的getaddrinfo
- 查看库的相关语句
- 性能优化
- DAPM之二:audio paths与dapm kcontrol
- drop ,truncate,delete 的区别
- [Unity3D]深度相机 Depth Camera
- autohotkey关于函数访问全局变量的解决方案
- 一个超强的变builder模式构建多参数构造器
- 无心应事,到底还在想什么。