简述:
返回对应于给定协议名的相关协议信息。
#include <winsock.h>
struct protoent FAR * PASCAL FAR getprotobyname(const char
FAR * name);
name:一个指向协议名的指针。
注释:
getprotobyname()返回对应于给定协议名的包含名字和协议号的protoent结构指针。结构的声明如下:
struct protoent {
char FAR * p_name;
char Far * far * p_aliases;
short p_proto;
};
结构的成员有:
成员 用途
p_name 正规的协议名。
p_aliases 一个以空指针结尾的可选协议名队列。
p_proto 以主机字节顺序排列的协议号
返回的指针指向一个由Windows Sockets实现分配的结构。应用程序不应该试图修改这个结构或者释放它的任何部分。此外,每一线程仅有一份这个结构的拷贝,所以应用程序应该在发出其他Windows Scokets API调用前,把自己所需的信息拷贝下来。
返回值:
如果没有错误发生,getprotobyname()返回如上所述的一个指向protoent结构的指针,否则,返回一个空指针。应用程序可以通过WSAGetLastError()来得到一个特定的错误代码。
错误代码:
WSANOTINTIALISED 在应用这个API前,必须成功地调用WSAStartup()。
WSAENTDOWN Windows Sockets实现检测到了网络子系统的错误。
WSANO_RECOVERY 无法恢复的错误,FORMERR,REFUSED,NOTIMP。
WSANO_DATA 有效的名字,但没有关于请求类型的数据记录。
WSAEINPROGRESS 一个阻塞的Windows Sockets操作正在进行。
WSAEINTR 阻塞调用被WSACancelBlockingCall()取消了.
参见:WSAAsyncGetProtoByName(),getprotobynumber()