getservbyname和getservbyport
生活随笔
收集整理的這篇文章主要介紹了
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的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UDP调用connect函数
- 下一篇: windows下带超时的telnet探测