getservbyname和getservbyport
生活随笔
收集整理的這篇文章主要介紹了
getservbyname和getservbyport
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
? ? ? ? ? ? ? ? ? ? getservbyname函數(shù)和getservbyport函數(shù)其實(shí)也挺簡(jiǎn)單的。來(lái)看看百度百科是怎么描述他們的。getservbyname()返回與給定服務(wù)名對(duì)應(yīng)的包含名字和服務(wù)號(hào)信息的servent結(jié)構(gòu)指針;getservbyport()函數(shù)返回對(duì)應(yīng)于給定端口號(hào)和協(xié)議名的相關(guān)服務(wù)信息,再來(lái)看看servent結(jié)構(gòu)體。
?
struct servent { char * s_name; char * * s_aliases; short s_port; char * s_proto; };?
?
給出一段測(cè)試的小代碼:
?
#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
對(duì)下配置文件:
?
?
[mapan@localhost etc]$ cat services | grep echo echo 7/tcp echo 7/udp ftp 21/tcp ftp 21/udp發(fā)現(xiàn)完全吻合。最后來(lái)玩一個(gè)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?
無(wú)需多說(shuō)。
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的getservbyname和getservbyport的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: UDP调用connect函数
- 下一篇: windows下带超时的telnet探测