socket相关

soket编程相关(二)如何判断连接状态断开,Linux:C/Socket多路复用select(),阻塞

http://blog.csdn.net/hejianhua/article/details/6461339

vc里如何测试某一个socket的连接状态,如果客户端用closesocket正常关掉连接,那么服务器上对应的socket会成为什么状态?

客户端
1. 连接(Connect):连接指令发出后,会立即返回一个错误码,该值只描述了程序执行的正确与否,比如程序流程不正确等;而OnConnect事件才可 以正确返回实际的网络连接状态。该事件的返回错误码=0时,表示连接正常,之后会收到OnSend事件;如果连接错误,返回错误码=错误代码,并回到原状 态。
2. 发送(Send):正常发送指令发出后,会立即返回一个错误码,该值只描述发送程序执行的正确与否,比如参数错误等;而OnSend事件才可能正确返回实 际发送状态,该事件的返回错误码=0时,表示发送正常,并回到原状态;如果出现错误,返回错误码=错误代码,并回到原状态。
3. 网络断开(Close):网络连接可使用Close指令控制断开,也可以通过切断网络或关闭服务源强行断开。网络断开后,会收到OnClose事件,在网 络断开到收到OnClose事件之间有一个时间差,约3~5秒,在这之间如果使用Send发送,将收不到OnSend事件,而只会收到OnClose事 件。服务端正常断开,nErrorCode返回0,非正常断开时,返回一个错误代码。
4. 接收到OnReceive事件:表示有数据需要接收,该事件返回一个错误码,当返回错误码=0时,可以使用Receive指令接收,该指令返回实际收到的字节数。
5. 断开连接(Close):执行Close指令,可断开网络。

服务端
在堆中创建套接字(使用New Socket)
1. 服务端开始3步曲:初始化套接字、创建套接字、建立侦听。
2. 使用API函数初始化套接字,再用Create进行创建,该套接字为的是侦听;创建成功使用Listen打开侦听。以上三个过程中,如果成功均返回TRUE,失败则返回FALSE。
3. 收到客户接收事件(OnAccept):表示与客户端连接成功。这时需要建立一个新的套接字,作为与客户端通信数据之用,并使用Accept指令代新建的 套接字响应客户端,该指令返回一个布尔值,如果响应成功返回TRUE,否则返回FALSE。而最初创建的套接字,只用于网络侦听,因而可建立多个连接。
4. 一但与客户端建立了联系,通信与响应方式与上面的客户端相同。

原文地址:https://www.cnblogs.com/pengzheng/p/3630767.html