Linux下网络相关结构体 struct servent
Linux下網(wǎng)絡(luò)相關(guān)結(jié)構(gòu)體 struct servent
參考書(shū)籍:《UNIX環(huán)境高級(jí)編程》
參考鏈接:
http://www.cnblogs.com/benxintuzi/p/4589819.html
一、簡(jiǎn)介
此結(jié)構(gòu)體存儲(chǔ)的是服務(wù)相關(guān)的信息。
結(jié)構(gòu)體定義如下:
1.s_name
表示的是服務(wù)名。
2.s_aliases
表示的是服務(wù)別名列表
3.s_port
端口號(hào)
4.s_proto
使用的協(xié)議
二、代碼
1)相關(guān)函數(shù)
2)getserverbyname
服務(wù)是由地址的端口號(hào)部分表示的。每個(gè)服務(wù)由一個(gè)唯一的、熟知的端口號(hào)來(lái)提供。此函數(shù)可以將一個(gè)服務(wù)名字映射到一個(gè)端口號(hào)。
該函數(shù)會(huì)/etc/services中匹配使用protocol proto 的service name,如果proto為NULL,則任何protocol將會(huì)被匹配
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.運(yùn)行
$ ./test servent name: telnets port number: 57347 proto to use: udp3)getservbyport
將一個(gè)端口號(hào)映射到一個(gè)服務(wù)名
2.運(yùn)行
$ ./test servent name: telnets port number: 57347 proto to use: udp4)如下代碼,順序掃描數(shù)據(jù)庫(kù)/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; }總結(jié)
以上是生活随笔為你收集整理的Linux下网络相关结构体 struct servent的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 手机office使用 手机office不
- 下一篇: linux+暂停运行,如何暂停和继续运行