shutdown()

王朝百科·作者佚名  2010-01-05  
宽屏版  字体: |||超大  

简述:

禁止在一个套接口上进行数据的接收与发送。

#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参数非法。

WSAEINPROGRESS:一个阻塞的WINDOWS套接口调用正在运行中。

WSAENOTCONN:套接口未连接(仅适用于SOCK_STREAM类型套接口)。

WSAENOTSOCK:描述字不是一个套接口。

参见:

connect(), socket().

 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝百科 版权所有