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,只为学习需要,多有得罪
  • 相关阅读:
    在intellij 下用java spring + Mysql + Hibernate 开发的第一个数据库demo
    推荐一个找到一个比较好的spring,java学习教程
    ReactiveCocoa 中signal(operation) then与doNext的区别
    grunt
    Swiper.js wap app 图片滑动效果
    less 路径 写法
    html5 input placeholder 占位符 输入框提示文本
    js 大小写转换
    css 修改选中文字的颜色
    keydown keypress keyup textInput
  • 原文地址:https://www.cnblogs.com/vage/p/3721425.html
Copyright © 2011-2022 走看看