精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
个人经验理解:前面讲到的DNS就是一种网络服务,这类服务提供客户端需要的一类数据,占用网络主机上一个端口,也使用一种指定的协议,DNS服务就是使用了DNS协议。自己写的程序不能强占标准服务使用的端口,否则程序运行会不正常。
要点
注意:
#include <netdb.h>
struct servent *getservbyname(const char *name,const char*proto); struct servent *getservbyport(int port,const char *proto); struct servent *getservent(void); void setservent(int stayopen); void endservent(void); struct servent { char *s_name;/*官方服务名称*/ char **s_aliases;/*别名列表*/ int s_port /*端口号*/ char *s_proto; /*使用协议*/ }
serv_entry=getservbyname(“ftp”,”tcp”);
返回描述了使用TCP协议的ftp服务对应的结构。
serv_entry=getservbyport(htons(80),”tcp”);
返回了描述使用TCP协议的HTTP服务对应的结构。
#include <netdb.h>
struct protoent *getprotobyname(const char *name); struct protoent *getprotobynumber(int proto); struct protoent *getprotoent(void); void setprotoent(int stayopen); void endprotoent(void); struct protoent { char *p_name;/*官方协议名称*/ char **p_aliases /*别名列表*/ int p_proto;/*/协议数字*/ }
lab2 finger 80
(注意:服务和端口名称不需要一致)