Linux下网络相关结构体 struct servent

参考书籍:《UNIX环境高级编程》
参考链接:
http://www.cnblogs.com/benxintuzi/p/4589819.html

一、简介
此结构体存储的是服务相关的信息。
结构体定义如下:

struct servent {char  *s_name;       char **s_aliases;    int    s_port;
char  *s_proto;
};

1.s_name
表示的是服务名。

2.s_aliases
表示的是服务别名列表

3.s_port
端口号

4.s_proto
使用的协议

二、代码
1)相关函数

2)getserverbyname
服务是由地址的端口号部分表示的。每个服务由一个唯一的、熟知的端口号来提供。此函数可以将一个服务名字映射到一个端口号。
该函数会/etc/services中匹配使用protocol proto 的service name,如果proto为NULL,则任何protocol将会被匹配

1.代码

#include <stdio.h>
#include <netdb.h>
int main()
{struct servent* serv = NULL;
serv = getservbyname("telnets", "udp");
if (serv != NULL)
{
printf("servent name: %s\n", serv->s_name);if (*serv->s_aliases != NULL)
{
printf("alias name: %s\n", *serv->s_aliases);
}
printf("port number: %d\n", serv->s_port);printf("proto to use: %s\n", serv->s_proto);
}
return 0;
}

2.运行


$ ./test
servent name: telnets
port number: 57347
proto to use: udp

3)getservbyport
将一个端口号映射到一个服务名

#include <stdio.h>
#include <netdb.h>
int main()
{struct servent* serv = NULL;
serv = getservbyport(57347, "udp");
if (serv != NULL)
{printf("servent name: %s\n", serv->s_name);if (*serv->s_aliases != NULL)
{
printf("alias name: %s\n", *serv->s_aliases);
}
printf("port number: %d\n", serv->s_port);printf("proto to use: %s\n", serv->s_proto);
}
return 0;
}

2.运行

$ ./test
servent name: telnets
port number: 57347
proto to use: udp

4)如下代码,顺序扫描数据库/etc/services,并打印信息

#include <stdio.h>
#include <netdb.h>void printservent(struct servent* serv)
{char** p = serv->s_aliases;printf("servent name: %s\n", serv->s_name);while(*p != NULL){printf("alias name: %s\n", *p);p++;}printf("port number: %d\n", serv->s_port);printf("proto to use: %s\n", serv->s_proto);
}int main()
{struct servent* serv = NULL;setservent(1);while((serv = getservent()) != NULL){printservent(serv);printf("\n");}endservent();return 0;
}

Linux下网络相关结构体 struct servent相关推荐

  1. Linux下网络相关结构体 struct addrinfo

    参考书籍:<UNIX环境高级编程> 参考连接: http://www.cnblogs.com/benxintuzi/p/4589819.html 一.简介 结构体定义如下: struct ...

  2. linux windows 结构体,Linux下C语言——结构体对齐

    结构体对齐的步骤: 1.结构体各成员对齐 2.整个结构体圆整 结构体对齐的特定对齐值: 1.自身对齐值: 自身对齐值就是结构体变量里每个成员的自身大小; 2.指定对齐值: 指定对齐值是由宏#pragm ...

  3. Linux下的PCB结构体

    进程的主要信息: 1.pid_t pid标识符:与进程相关的唯一标识符,区别正在执行的进程和其他进程 2.状态:描述进程的状态,因为进程有阻塞.挂起.运行等好几个状态,所以都有个表示符来记录进程的执行 ...

  4. linux i2c驱动相关结构体

    i2c驱动看下来感觉就像一张找不到头的网,繁复错杂,千丝万缕,很难理清.这还只是一个简单的子系统,还有复杂的USB总线,更别提内核的复杂了,哎,路漫漫其修远兮...anyway,加油! 函数指针和链表 ...

  5. linux arp头文件,Linux下ARP头结构体的问题

    在我的系统中 /usr/include/net/if_arp.h中arphdr的结构体定义如下 struct arphdr { unsigned short int ar_hrd;/* Format ...

  6. 常用linux下网络相关命令

    说明: 以下命令为Linux中常用的网络命令,适用于大多数Linux/Unix系统,少数系统可能会有差异.欢迎大家根据自己日常工作中的使用情况进行补充. 设置网络参数的命令: 手动/自动配置IP参数与 ...

  7. linux 结构体 struct addrinfo 简介

    目录 定义 相关方法 1. getaddrinfo(const char, const char, const struct addrinfo, struct addrinfo*) 2. freead ...

  8. linux sock结构体,struct socket结构体详解

    在内核中为什么要有struct socket结构体呢? struct socket结构体的作用是什么? 下面这个图,我觉得可以回答以上两个问题.  由这个图可知,内核中的进程可以通过使用struct ...

  9. Linux与时间相关的结构体及相关用法

    1. Linux下与时间有关的结构体         struct timeval        {              int tv_sec;              int tv_usec ...

最新文章

  1. 高 NPS 背后的专业服务体系是如何炼成的?
  2. STM32开发 -- Gerrit的详细使用
  3. 解决Eclipse代码分析插件SonarLint在Console输出乱码问题
  4. 网上选课系统的php代码,网上选课系统(论文+程序)
  5. Uploadify3.2中文提示
  6. My cnblogs's first day
  7. 国外少儿PYTHON编程书推荐
  8. SOA和微服务之间的区别
  9. dbf文件怎么创建_ThinkPHP6开发博客实战入门(三),创建admin后台入口
  10. c++ log函数_高斯拉普拉斯算子(Laplacian of Gaussian, LoG)
  11. mysql控制台导出查询结果_MySQL 命令行导出、导入Select 查询结果
  12. React Native屏幕尺寸适配
  13. 如何利用SQL Server的事务日志?
  14. Android:制作Update.zip升级包 【转】
  15. ext3与ext4主要区别
  16. c语言求利用麦克劳林公式求sinx值,用泰勒公式求sin(x)的近似值
  17. 我们为什么需要 DAO 操作系统?
  18. 兵卒情缘酒新品上市发布会
  19. 电脑蓝牙无法搜索到其它蓝牙设备
  20. Python:利用多种方式解微分方程(以二阶微分系统零状态响应为例)

热门文章

  1. [转] 程序员才懂的58张图片,哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
  2. Hdu6355 Fireflies 题解
  3. unity游戏之太空射击
  4. 【加解密】在线加密工具推荐
  5. 2021年高考成绩查询湖北状元,2021年武汉高考状元名单公布,武汉高考状元学校资料及最高分...
  6. 红帽 Red Hat Linux相关产品iso镜像下载【百度云】【更新6.9】
  7. 万兆NAS存储网络组建方案
  8. C1任务一01-信息编码
  9. 支付宝-蚂蚁金服一面
  10. setlocale(LC_ALL,) 中的 LC_* 是什么意思,以及 LANGUAGE/LANG 都是些啥?