zoukankan      html  css  js  c++  java
  • delphi Winsock非阻塞模式详解

    delphi Winsock非阻塞模式详解
     
    Winsockt的TClientSocket设置ClientType的属性为ctNonBlocking.则通讯模式为非阻塞模式。
    ctBlocking为阻塞模式,这里说一下阻塞与非阻塞的一些区别。
    ctBlocking模式当客户端请求数据后,线程阻塞不继续执行,直到服务端返回数据,客户端将据需执行,并读取数据。
    然而阻塞模式的缺陷还是比较大的,经常会使程序死掉或者假死。当服务端发送较大的文件时,阻塞模式基本废掉了,由于数据缓冲较小,不能及时的获取数据,阻塞模式将会认为数据发送完毕,会断掉服务连接,导致数据传送失败。因此阻塞模式比较适用于网络通畅,并且数据量小的情况。
     
    非阻塞模式当客户端发送连接请求,及open之后,并不会执行之后的请求,就算有请求的数据也不会发送,而是会执行connect和write这两个事件,中间应该还有connecting事件。connect是连接成功后的事件,write是准备发送请求的事件。我们所有的发送请求都会在write事件里面执行。当我们在write事件中执行后,会调用read事件,在read事件中我们将会接受到服务端发送的数据,如果数据量比较大,则会一直调用read事件,直到数据发送完毕。非阻塞模式适合数据量较大的情况。
     
    阻塞模式与非阻塞模式区别还是较大,但是根据我个人观点,非阻塞模式相对与阻塞模式有更大的优势,无论是性能,还是数据完整性方面的都较好。因此在我开发时也是使用非阻塞的模式
     
     
    此为转载内容,出处为:http://www.2cto.com/kf/201302/191918.html,只为学习需要,多有得罪
  • 相关阅读:
    updatepanel,linkbutton一点问题
    URL编码处理
    习惯
    style.display,有点问题
    [转]Atlas goes M2.2 or June CTP
    贴代码——从泛型数组中递归删除不符合要求的项
    做好项目,思想要不得
    关于MemoryStream类
    DateTimePicker控件的使用
    Console“自服务”读取文件
  • 原文地址:https://www.cnblogs.com/vage/p/3721425.html
Copyright © 2011-2022 走看看