struct servent

一、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位存放变量的段内偏移。

原文地址:https://www.cnblogs.com/cyx-b/p/12450217.html