Linux下网络相关结构体 struct servent
生活随笔
收集整理的這篇文章主要介紹了
Linux下网络相关结构体 struct servent
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Linux下網絡相關結構體 struct servent
參考書籍:《UNIX環境高級編程》
參考鏈接:
http://www.cnblogs.com/benxintuzi/p/4589819.html
一、簡介
此結構體存儲的是服務相關的信息。
結構體定義如下:
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: udp3)getservbyport
將一個端口號映射到一個服務名
2.運行
$ ./test servent name: telnets port number: 57347 proto to use: udp4)如下代碼,順序掃描數據庫/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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手机office使用 手机office不
- 下一篇: 北京仁源欣生获200万美元天使轮融资,和