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

  • 相关阅读:
    [SUCTF 2019]EasySQL 1【BUUCFT】【SQL注入】
    [HCTF 2018]WarmUp 1【BUUCFT】【代码审计】
    [强网杯 2019]随便注 1 【BUUCFT】【SQL注入】
    网站如何做好防护
    【单片机】换行、回车
    【Win32】VC6 Visual C/C++ 6.0 修改程序图标
    【Win32】通过多线程自动关闭对话框的方法
    微服务demo
    Mac安装redis
    python---rsa加密根据指数和模生成加密参数模板
  • 原文地址:https://www.cnblogs.com/stevenlaz/p/3588653.html
Copyright © 2011-2022 走看看