getservbyname 及 struct servent
今天看 isc-dhcp-源代码发现一个结构体不认识 struct servent。遂查之,通过阅读资料手动尝试,现总结如下:
定义于:/usr/include/netdb.h
/* Description of data base entry for a single service. */
struct servent {
char *s_name; /* Official service name. */
char **s_aliases; /* Alias list. */
int s_port; /* Port number. */
char *s_proto; /* Protocol to use. */
};
相关的函数:
struct servent *getservent(void);
struct servent *getservbyname(const char *name, const char *proto);
struct servent *getservbyport(int port, const char *proto);
具体的 man 手册都有。稍微介绍下就是从 netdb.h 获取各个服务器端口号,别名等信息。
那么netdb.h 在哪呢?
这个在 /etc/services 文件里。这里面记录了常用的服务器监听的端口号。
比如 smtp 监听25 ssh 22 mysql 3306 ...
</pre><pre name="code" class="cpp">int main()
{struct servent* p = getservbyname( "smtp", "tcp" );if( NULL == p ){perror( "getservbyname" );return -1;}//这里注意 port 一定是要 转换成主机字节序printf( "serverName:%s, port=%d\n", p->s_name, ntohs( p->s_port) );return 0;
}
结构
最后提醒大家注意的是;一定记得把 s_port 成员 ntohls 一下。
getservbyname 及 struct servent相关推荐
- UNP编程:31---名字与地址转换之(服务解析函数:getservbyname()、getservbyport()、struct servent)
一.服务与地址的关系 一个端口代表一个服务(服务进程),因此可以使用服务名来代替端口的使用 像主机一样,服务也通常靠名字来认知 如果我们在程序代码中通过其名字而不是其端口号来指代一个服务,而且从名字到 ...
- Linux下网络相关结构体 struct servent
Linux下网络相关结构体 struct servent 参考书籍:<UNIX环境高级编程> 参考链接: http://www.cnblogs.com/benxintuzi/p/45898 ...
- 网络编程学习笔记(getservbyname和getservbyport函数)
通过服务器的名字而不是服务器端口号来认知它,而且如果从主机到端口号的映射包含在一个文件中(一般是/etc/services),则如果端口号改变,我们所需做的所有改动就是改动文件/etc/service ...
- getservbyname和getservbyport
getservbyname函数和getservbyport函数其实也挺简单的.来看看百度百科是怎么描述他们的.getservbyname()返回与给定服务名对应的包含名字和服务号信息的servent结 ...
- (域名、主机名、服务名、端口号)名字与地址的转换 (gethostbyname、getservbyname、getaddrinfo、getnameinfo等)
转载地址 本章讲述在名字和数值地址间进行转换的函数:gethostbyname和gethostbyaddr在主机名字与IP地址间进行转换,getservbyname和getservbyport在服务器 ...
- getservbyname()函数与getservbyport()函数
getservbyname()函数与getserbyport()函数都是用来获取服务的信息.该信息用servent结构表示. 1 servent结构 servent结构的定义为 typedef str ...
- 名字与地址转换getservbyname 与 getservbyport函数
名字与地址转换getservbyname 与 getservbyport函数 服务也通常靠名字来标志,getservbyname函数用于根据给定名字查找相应服务. #include struct ...
- getservbyname、getservbyport
名字和端口号的映射存放在/etc/services配置文件中,那么之后,尽管端口号发生改变,我们仅仅需要修改/etc/services配置文件中某个服务对应的端口号即可(不需要重新编译程序). ...
- UNP总结 Chapter 11 名字与地址转换
本章讲述在名字和数值地址间进行转换的函数:gethostbyname和gethostbyaddr在主机名字与IP地址间进行转换,getservbyname和getservbyport在服务器名字和端口 ...
最新文章
- (原)Eclipse 字体过小问题
- CentOS7关闭防火墙
- 非平坦结构元matlab,基于MATLAB的巴特沃思型数字滤波器设计.doc
- thinkphp3.2 jquery ajax巧妙使用
- 备份恢复与同步(数据搬运专家)
- 解析PHP跳出循环的方法以及continue、break、exit的区别介绍
- PCL点云 Lebel:Research
- Intel Hex概述
- 《深入理解并行编程》中文版
- 因式分解题目及过程_两道新定义题目的对比分析
- linux查看二进制文件乱码
- 单片机芯片——电子秤芯片
- 图解hadoop原理
- 多种Map简单使用和测试
- VS2010旗舰版如何显示行号
- 【程序人生】这是 2017 关于程序员薪酬最详尽的调查报告
- Oracle兵器谱上古神器之-KFED
- 【胖虎的逆向之路】如何绕过 Android11新特性之 “包的可见性“
- VMware安装VMwareTolls
- fastjson byte[]转json字符串
热门文章
- 【51nod 1326】遥远的旅途【最短路】
- 微信小程序键盘弹起后页面上推问题
- 求生之路无限子弹服务器,求生之路2怎么调无限子弹(在单机中)
- RStudio安装tsna时报错installation of package ‘tsna’ had non-zero exit status
- AVI音视频封装格式学习(五)——h265与PCM合成AVI文件
- 《智能控制导论》读书报告(课程作业)--常规控制的智能化
- android自定义view之九宫格解锁
- matlab方程近似求根,第七讲MATLAB中求方程的近似根(解)教学目的学习matlab中求根命令.doc...
- AccountManager使用教程
- 小米笔记本装linux教程视频教程,小米笔记本安装Ubuntu 18.04系统后使用特殊键的方法...