日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux下网络相关结构体 struct servent

發布時間:2023/12/20 linux 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。