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


    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的模型的服务端也不错。

    By steven

    2014-2-1

  • 相关阅读:
    AVR单片机教程——EasyElectronics Library v1.1手册
    C++ lambda的演化
    希尔排序的正确性 (Correctness of ShellSort)
    PAT甲级满分有感
    PAT甲级题分类汇编——杂项
    Python第八章-异常
    Python第七章-面向对象高级
    Python第七章-面向对象初级
    Python第六章-函数06-高阶函数
    Python第六章-函数05-迭代器&生成器
  • 原文地址:https://www.cnblogs.com/stevenlaz/p/3588653.html
Copyright © 2020-2023  润新知