zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Django框架 之 logging配置
    Django框架 之 中间件
    Django框架 之 form组件
    Django框架 之 Ajax
    Django框架 之 Pagination分页实现
    3张图带你看懂扩展KMP(EXKMP)
    [TJOI2018]游园会(状压dp+LCS)
    [BZOJ 2959] 长跑(LCT+并查集)
    [NAIPC2016]Jewel Thief(决策单调性+分治)
    [BZOJ 1563] [NOI 2009] 诗人小G(决策单调性)
  • 原文地址:https://www.cnblogs.com/stevenlaz/p/3588653.html
Copyright © 2011-2022 走看看