一、servent结构体声明
struct servent {
char FAR* s_name;
char FAR* FAR* s_aliases;
short s_port;
char FAR* s_proto;
};
二、结构成员
s_name 正规的服务名。(服务名)
s_aliases 一个以空指针结尾的可选服务名队列。(服务别名列表)
s_port 连接该服务时需要用到的端口号,返回的端口号是以网络字节顺序排列的。(端口号)
s_proto 连接该服务时用到的协议名。(使用的协议)
返回的指针指向一个由Windows Sockets实现分配的结构。应用程序不应该试图修改这个结构或者释放它的任何部分。此外,每一线程仅有一份这个结构的拷贝,所以应用程序应该在发出其他Windows Scokets API调用前,把自己所需的信息拷贝下来。
三、补充说明
FAR 是16位系统时候的概念了,代表远指针的意思。
近指针是16位的指针,它只表示段内的偏移地址,因而只能对64k字节数据段内地址进行存取。
如 char near *p;
p=(char near *)0xffff;
远指针是32位指针,它表示 段地址:偏移地址,如定义远程指针p指向B500段的2号地址,即B500:0002,则可写作:
char far *p;
p=(char far *)0xB5000002;
因此,远指针可以进行跨段寻址,可以访问整个内存的地址。
16位系统有远近指针之分的环境中,得告诉编译器指针变量h_name强制使用远指针方式。因为16位系统寻址范围只有2^16=64K,所以用FAR指针,再加上16位,高16位存放的是变量的段地址,低16位存放变量的段内偏移。