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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

getservbyname和getservbyport

發布時間:2025/6/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 getservbyname和getservbyport 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? ? ? ? ? ? ? ? ? ? getservbyname函數和getservbyport函數其實也挺簡單的。來看看百度百科是怎么描述他們的。getservbyname()返回與給定服務名對應的包含名字和服務號信息的servent結構指針;getservbyport()函數返回對應于給定端口號和協議名的相關服務信息,再來看看servent結構體。

?

struct servent { char * s_name; char * * s_aliases; short s_port; char * s_proto; };

?

?

給出一段測試的小代碼:

?

#include <sys/socket.h> #include <netdb.h> #include <stdio.h> #include <netinet/in.h> #include <arpa/inet.h>int main() {struct servent *sptr;sptr=getservbyname("echo","udp");printf("port=%d\n",ntohs(sptr->s_port));sptr=getservbyname("ftp","tcp");printf("port=%d\n",ntohs(sptr->s_port));sptr=getservbyport(htons(7),"udp");printf("name=%s\n",sptr->s_name);sptr=getservbyport(htons(21),"tcp");printf("name=%s\n",sptr->s_name);return 0; }

打印:

?

?

[mapan@localhost unixNetwork]$ ./a.out port=7 port=21 name=echo name=ftp


對下配置文件:

?

?

[mapan@localhost etc]$ cat services | grep echo echo 7/tcp echo 7/udp ftp 21/tcp ftp 21/udp

發現完全吻合。最后來玩一個gethostbyaddr的小程序。

?

?

#include <stdio.h> #include <netdb.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h>int main() {char ip[]="127.0.0.1";struct in_addr addr;struct hostent *phost;addr.s_addr=inet_addr(ip);phost=gethostbyaddr(&addr,sizeof(addr),AF_INET);if(phost == NULL){printf("error\n");}printf("name=%s\n",phost->h_name);return 0; }

打印:

?

?

[mapan@localhost unixNetwork]$ ./a.out name=localhost

?

無需多說。

?



?

?

?

總結

以上是生活随笔為你收集整理的getservbyname和getservbyport的全部內容,希望文章能夠幫你解決所遇到的問題。

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