• 转:Delphi各种Socket组件的模式和模型


    Delphi的大多数书籍里面都没有提到delphi的各种socket通信组件的模式和模型,有的书只讲解了windows的socket模式和模型,并没有归纳各种组件采用的模型,所以我们的程序员并不知道如何进行选择,只知道某组件好,为什么好,如何运用就不知道了。

    笔者对这些组件进行了一个归纳,如下:

    组件

    单元

    依赖

    模式

    模型

    WebApp/CGI

    sockapp.pas

    Indy

    阻塞/非阻塞

    select

    Indy

    阻塞/非阻塞

    select

    ICS

    OverbyteIcsWSocket.pas

    非阻塞

    WMAsyncSelect

    TTcpServer/TTcpClient

    sockets.pas

    阻塞/非阻塞

    Select

    RealThinClient

    ICS变种

    非阻塞

    wsaasyncselect

    synapse

    blckSock.pas

    阻塞/非阻塞

    Select

    TServerSocket

    TClientSocket

    ScktComp.pas

    阻塞/非阻塞

    WSAAsyncSelect

    FastNet

    psock.pas

    WSAAsyncselect

    TSocketConnection

    TServerSocket

    TClientSocket

    从上面表格可以看出,没有一个组件使用下面4种模型:

    阻塞模式

    重叠端口

    事件选择

    完成端口

    都只用到了:

    Select

    WSAAsyncselect

    这两种模型,而其中使用WSAAsyncselect模型的,必然需要窗口,用来做服务的组件并不多。

    我们再来分析各种服务端程序是采用什么模型:

    软件

    模型

    Apache 2

    IOCP

    Select

    Mysql 5

    Select

    Erlang

    Select

    WSAEventSelect

     传奇

    服务端使用TServerSocket,是有窗口的。

     总结:只有indy和synapse适合做没有窗口的服务端。要么自己开发IOCP的模型的服务端也不错。

  • 相关阅读:
    js获取UserControl (<uc1>)控件ID
    NPOI的使用
    Ajax实现页面后台button click事件无刷新弹窗
    java反射中Class对象详解和类名.class, class.forName(), getClass()区别
    反射的笔记
    MyEclipse异常关闭导致启动不了tomcat的解决方法
    java面试题05
    java面试题04
    Spring笔记03(Spring创建对象的三种方式)
    Spring笔记02(3种加载配置文件的方式)
  • 原文地址:https://www.cnblogs.com/carcode/p/4605914.html
Copyright © 2020-2023  润新知