zoukankan      html  css  js  c++  java
  • 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. 一但与客户端建立了联系,通信与响应方式与上面的客户端相同。

  • 相关阅读:
    构造函数详解
    左值和左值引用、右值和右值引用
    Lambda函数
    std::thread详解
    运算符重载
    友元函数和友元类
    xadmin list_filter 外键数据不显示
    中缀表达式转后缀表达式
    Centos 7 minimal 联网
    python 运用三目判断对象中多个属性 有且非空
  • 原文地址:https://www.cnblogs.com/pengzheng/p/3630767.html
Copyright © 2011-2022 走看看