|
ncSelect().
简述:
禁止在一个套接口上进行数据的接收与发送。
#include <winsock.h>
int
PASCAL FAR shutdown( SOCKET s, int how);
s:用于标识一个套接口的描述字。
how:标志,用于描述禁止哪些操作。
注释:
shutdown()函数用于任何类型的套接口禁止接收、禁止发送或禁止收发。
如果how参数为0,则该套接口上的后续接收操作将被禁止。这对于低层协议无影响。对于TCP协议,TCP窗口不改变并接收前来的数据(但不确认)直至窗口满。对于UDP协议,接收并排队前来的数据。任何情况下都不会产生ICMP错误包。
若how为1,则禁止后续发送操作。对于TCP,将发送FIN。
若how为2,则同时禁止收和发。
请注意shutdown()函数并不关闭套接口,且套接口所占有的资源将被一直保持到closesocket()调用。
评注:
无论SO_LINGER设置与否,shutdown()函数不会阻塞。
一个应用程序不应依赖于重用一个已被shutdown()禁止的套接口。特别地,一个WINDOWS套接口实现不必支持在这样的套接口上使用connect()调用。
返回值:
如果没有错误发生,shutdown()返回0。否则的话,返回SOCKET_ERROR错误,应用程序可通过WSAGetLastError()获取相应错误代码。
错误代码:
WSANOTINITIALISED:在使用此API之前应首先成功地调用WSAStartup()。
WSAENETDOWN:WINDOWS套接口实现检测到网络子系统失效。
WSAEINVAL:how参数非法。
|