getservbyname()函数与getservbyport()函数

getservbyname()函数与getserbyport()函数都是用来获取服务的信息。该信息用servent结构表示。

1 servent结构

servent结构的定义为

typedef struct servent {

char *s_name

; char **s_aliases

} SERVENT, *PSERVENT, *LPSERVENT;

其中,变量s_name指向服务名,s_aliases保存了指向服务别名的指针。

2 getservbyname()函数

getservbyname()函数的作用是通过服务名来获取服务的信息。该函数的格式为

servent * getservbyname( const char *name, const char *proto );

其中,参数name指向了服务名;proto指向了协议类型。如果成功执行,getservbyname()函数返回保存了服务信息的指针。

servent* pServent_name;

pServent_name = getservbyname("domain", NULL);

其中,参数“domain”指定了服务名,NULL表示返回获取到的第一个服务信息。此时pServent_name指向的获取到的服务信息。

3 getservbyport()函数

getservbyport()函数的作用是通过服务的端口来获取服务的信息。该函数的格式为

servent * getservbyport( int port, const char *proto );

其中,参数port是服务对应的端口号,需要注意的是该端口是网络字节序格式;proto指定了服务的协议类型。如果成功执行,getservbyport()函数返回保存了服务信息的指针。

servent *pServent_port;

pServent_port = getservbyport(htons(13568), "tcp");

其中,13568是服务对应的端口号,“tcp”是服务的协议类型。获取到的服务信息就保存在pServent_port指定的地址中。

4 所需头文件和库文件

需要注意的是,使用getservbyname()函数与getserbyport()函数时,需要指定其所需的头文件和库文件。

#include <winsock.h>

#pragma comment(lib, "Ws2_32.lib")

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值