今天看 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相关推荐

  1. UNP编程:31---名字与地址转换之(服务解析函数:getservbyname()、getservbyport()、struct  servent)

    一.服务与地址的关系 一个端口代表一个服务(服务进程),因此可以使用服务名来代替端口的使用 像主机一样,服务也通常靠名字来认知 如果我们在程序代码中通过其名字而不是其端口号来指代一个服务,而且从名字到 ...

  2. Linux下网络相关结构体 struct servent

    Linux下网络相关结构体 struct servent 参考书籍:<UNIX环境高级编程> 参考链接: http://www.cnblogs.com/benxintuzi/p/45898 ...

  3. 网络编程学习笔记(getservbyname和getservbyport函数)

    通过服务器的名字而不是服务器端口号来认知它,而且如果从主机到端口号的映射包含在一个文件中(一般是/etc/services),则如果端口号改变,我们所需做的所有改动就是改动文件/etc/service ...

  4. getservbyname和getservbyport

    getservbyname函数和getservbyport函数其实也挺简单的.来看看百度百科是怎么描述他们的.getservbyname()返回与给定服务名对应的包含名字和服务号信息的servent结 ...

  5. (域名、主机名、服务名、端口号)名字与地址的转换 (gethostbyname、getservbyname、getaddrinfo、getnameinfo等)

    转载地址 本章讲述在名字和数值地址间进行转换的函数:gethostbyname和gethostbyaddr在主机名字与IP地址间进行转换,getservbyname和getservbyport在服务器 ...

  6. getservbyname()函数与getservbyport()函数

    getservbyname()函数与getserbyport()函数都是用来获取服务的信息.该信息用servent结构表示. 1 servent结构 servent结构的定义为 typedef str ...

  7. 名字与地址转换getservbyname 与 getservbyport函数

    名字与地址转换getservbyname 与 getservbyport函数 服务也通常靠名字来标志,getservbyname函数用于根据给定名字查找相应服务. #include struct    ...

  8. getservbyname、getservbyport

        名字和端口号的映射存放在/etc/services配置文件中,那么之后,尽管端口号发生改变,我们仅仅需要修改/etc/services配置文件中某个服务对应的端口号即可(不需要重新编译程序). ...

  9. UNP总结 Chapter 11 名字与地址转换

    本章讲述在名字和数值地址间进行转换的函数:gethostbyname和gethostbyaddr在主机名字与IP地址间进行转换,getservbyname和getservbyport在服务器名字和端口 ...

最新文章

  1. (原)Eclipse 字体过小问题
  2. CentOS7关闭防火墙
  3. 非平坦结构元matlab,基于MATLAB的巴特沃思型数字滤波器设计.doc
  4. thinkphp3.2 jquery ajax巧妙使用
  5. 备份恢复与同步(数据搬运专家)
  6. 解析PHP跳出循环的方法以及continue、break、exit的区别介绍
  7. PCL点云 Lebel:Research
  8. Intel Hex概述
  9. 《深入理解并行编程》中文版
  10. 因式分解题目及过程_两道新定义题目的对比分析
  11. linux查看二进制文件乱码
  12. 单片机芯片——电子秤芯片
  13. 图解hadoop原理
  14. 多种Map简单使用和测试
  15. VS2010旗舰版如何显示行号
  16. 【程序人生】这是 2017 关于程序员薪酬最详尽的调查报告
  17. Oracle兵器谱上古神器之-KFED
  18. 【胖虎的逆向之路】如何绕过 Android11新特性之 “包的可见性“
  19. VMware安装VMwareTolls
  20. fastjson byte[]转json字符串

热门文章

  1. 【51nod 1326】遥远的旅途【最短路】
  2. 微信小程序键盘弹起后页面上推问题
  3. 求生之路无限子弹服务器,求生之路2怎么调无限子弹(在单机中)
  4. RStudio安装tsna时报错installation of package ‘tsna’ had non-zero exit status
  5. AVI音视频封装格式学习(五)——h265与PCM合成AVI文件
  6. 《智能控制导论》读书报告(课程作业)--常规控制的智能化
  7. android自定义view之九宫格解锁
  8. matlab方程近似求根,第七讲MATLAB中求方程的近似根(解)教学目的学习matlab中求根命令.doc...
  9. AccountManager使用教程
  10. 小米笔记本装linux教程视频教程,小米笔记本安装Ubuntu 18.04系统后使用特殊键的方法...