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万美元天使轮融资,和
