关闭套接字closesocket()
来源:互联网 发布:淘宝嘉悦海外专营店 编辑:程序博客网 时间:2024/05/01 22:21
本文来自百度百科
此函数关闭套接字s,并释放分配给该套接字的资源,以后对s 的引用都将产生错误WSAENOTSOCK。如果s涉及一个打开的TCP连接,该连接被释放。
目
录
- 1简述
- 2注释
- 3返回值
- 4错误代码
- 5参见
1简述
编辑关闭一个套接口。
#include <winsock.h>
int PASCAL FAR closesocket( SOCKET s);
s:一个套接口的描述字。
2注释
编辑本函数关闭一个套接口。更确切地说,它释放套接口描述字s,以后对s的访问均以WSAENOTSOCK错误返回。若本次为对套接口的最后一次访问,则相应的名字信息及数据队列都将被释放。closesocket()的语义受SO_LINGER与SO_DONTLINGER选项影响,对比如下:
选项 间隔 关闭方式 等待关闭与否
SO_DONTLINGER 不关心 优雅 否
SO_LINGER 零 强制 否
SO_LINGER 非零 优雅 是
若设置了SO_LINGER(亦即linger结构中的l_onoff域设为非零),并设置了零超时间隔,则closesocket()不被阻塞立即执行,不论是否有排队数据未发送或未被确认。这种关闭方式称为“强制”或“失效”关闭,因为套接口的虚电路立即被复位,且丢失了未发送的数据。在远端的recv()调用将以WSAECONNRESET出错。
closesocket()若设置了SO_LINGER并确定了非零的超时间隔,则closesocket()调用阻塞进程,直到所剩数据发送完毕或超时。这种关闭称为“优雅的”关闭。请注意如果套接口置为非阻塞且SO_LINGER设为非零超时,则closesocket()调用将以WSAEWOULDBLOCK错误返回。
若在一个流类套接口上设置了SO_DONTLINGER(也就是说将linger结构的l_onoff域设为零;则closesocket()调用立即返回。但是,如果可能,排队的数据将在套接口关闭前发送。请注意,在这种情况下WINDOWS套接口实现将在一段不确定的时间内保留套接口以及其他资源,这对于想用所以套接口的应用程序来说有一定影响。
3返回值
编辑如无错误发生,则closesocket()返回0。否则的话,返回SOCKET_ERROR错误,应用程序可通过WSAGetLastError()获取相应错误代码。
4错误代码
编辑WSANOTINITIALISED:在使用此API之前应首先成功地调用WSAStartup()。
WSAENETDOWN:WINDOWS套接口实现检测到网络子系统失效。
WSAENOTSOCK:描述字不是一个套接口。
WSAEINPROGRESS:一个阻塞的WINDOWS套接口调用正在运行中。
WSAEINTR:通过一个WSACancelBlockingCall()来取消一个(阻塞的)调用。
WSAEWOULDBLOCK:该套接口设置为非阻塞方式且SO_LINGER设置为非零超时间隔。
5参见
编辑accept(), socket(), ioctlsocket(), setsockopt(), WSAAsyncSelect().[1]
参考资料:
扩展阅读:
- 关闭套接字closesocket()
- 关闭套接字
- closesocket()
- Closesocket
- 套接字的关闭过程
- closesocket和linger,关于安全关闭socket(转自MSDN)
- (二)关于套接字的断开操作--半关闭
- UDP套接字的数据传输.套接字的关闭
- 关闭套接字的安全处理
- 如何正常关闭一个套接字
- MUD游戏编程 关闭套接字
- org.hibernate.util.JDBCExceptionReporter# 关闭的连接(或者无法从套接字读取更多数据)
- Java网络编程 --– 套接字的半关闭
- 针对套接字关闭异常:Socket closed解决方案
- Socket(套接字)
- Socket(套接字)
- Socket(套接字)
- Socket(套接字)
- 剑指offer 63题 【树】二叉搜索树的第k个结点
- hdu5691Sitting in Line
- Mockito:一个强大的用于Java开发的模拟测试框架
- inux下Eclipse设置汉字编码(GBK)
- springframework检测不了jdk1.8
- 关闭套接字closesocket()
- Ant-build.xml配置说明
- JQuery效果
- C# 读取EXCEL文件的三种经典方法
- 用WeX5做一个二维码名片应用!有源码!
- opendir, readdir
- LintCode(easy)比较字符串(正确版)
- 从Script到Code Blocks、Code Behind到MVC、MVP、MVVM
- 【FJ省队训练&&NOIP夏令营】酱油&&滚粗记