Linux下网络相关结构体 struct servent
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相关推荐
- Linux下网络相关结构体 struct addrinfo
参考书籍:<UNIX环境高级编程> 参考连接: http://www.cnblogs.com/benxintuzi/p/4589819.html 一.简介 结构体定义如下: struct ...
- linux windows 结构体,Linux下C语言——结构体对齐
结构体对齐的步骤: 1.结构体各成员对齐 2.整个结构体圆整 结构体对齐的特定对齐值: 1.自身对齐值: 自身对齐值就是结构体变量里每个成员的自身大小; 2.指定对齐值: 指定对齐值是由宏#pragm ...
- Linux下的PCB结构体
进程的主要信息: 1.pid_t pid标识符:与进程相关的唯一标识符,区别正在执行的进程和其他进程 2.状态:描述进程的状态,因为进程有阻塞.挂起.运行等好几个状态,所以都有个表示符来记录进程的执行 ...
- linux i2c驱动相关结构体
i2c驱动看下来感觉就像一张找不到头的网,繁复错杂,千丝万缕,很难理清.这还只是一个简单的子系统,还有复杂的USB总线,更别提内核的复杂了,哎,路漫漫其修远兮...anyway,加油! 函数指针和链表 ...
- linux arp头文件,Linux下ARP头结构体的问题
在我的系统中 /usr/include/net/if_arp.h中arphdr的结构体定义如下 struct arphdr { unsigned short int ar_hrd;/* Format ...
- 常用linux下网络相关命令
说明: 以下命令为Linux中常用的网络命令,适用于大多数Linux/Unix系统,少数系统可能会有差异.欢迎大家根据自己日常工作中的使用情况进行补充. 设置网络参数的命令: 手动/自动配置IP参数与 ...
- linux 结构体 struct addrinfo 简介
目录 定义 相关方法 1. getaddrinfo(const char, const char, const struct addrinfo, struct addrinfo*) 2. freead ...
- linux sock结构体,struct socket结构体详解
在内核中为什么要有struct socket结构体呢? struct socket结构体的作用是什么? 下面这个图,我觉得可以回答以上两个问题. 由这个图可知,内核中的进程可以通过使用struct ...
- Linux与时间相关的结构体及相关用法
1. Linux下与时间有关的结构体 struct timeval { int tv_sec; int tv_usec ...
最新文章
- 高 NPS 背后的专业服务体系是如何炼成的?
- STM32开发 -- Gerrit的详细使用
- 解决Eclipse代码分析插件SonarLint在Console输出乱码问题
- 网上选课系统的php代码,网上选课系统(论文+程序)
- Uploadify3.2中文提示
- My cnblogs's first day
- 国外少儿PYTHON编程书推荐
- SOA和微服务之间的区别
- dbf文件怎么创建_ThinkPHP6开发博客实战入门(三),创建admin后台入口
- c++ log函数_高斯拉普拉斯算子(Laplacian of Gaussian, LoG)
- mysql控制台导出查询结果_MySQL 命令行导出、导入Select 查询结果
- React Native屏幕尺寸适配
- 如何利用SQL Server的事务日志?
- Android:制作Update.zip升级包 【转】
- ext3与ext4主要区别
- c语言求利用麦克劳林公式求sinx值,用泰勒公式求sin(x)的近似值
- 我们为什么需要 DAO 操作系统?
- 兵卒情缘酒新品上市发布会
- 电脑蓝牙无法搜索到其它蓝牙设备
- Python:利用多种方式解微分方程(以二阶微分系统零状态响应为例)
热门文章
- [转] 程序员才懂的58张图片,哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
- Hdu6355 Fireflies 题解
- unity游戏之太空射击
- 【加解密】在线加密工具推荐
- 2021年高考成绩查询湖北状元,2021年武汉高考状元名单公布,武汉高考状元学校资料及最高分...
- 红帽 Red Hat Linux相关产品iso镜像下载【百度云】【更新6.9】
- 万兆NAS存储网络组建方案
- C1任务一01-信息编码
- 支付宝-蚂蚁金服一面
- setlocale(LC_ALL,) 中的 LC_* 是什么意思,以及 LANGUAGE/LANG 都是些啥?