如题,最好能讲详细点,有代码更好.

解决方案 »

  1.   

    我设计的应用服务器都是“多线程”的,而且一些还是硬实时的,所以,我一般没有办法使用线程的类,如TSever、TClient之类的对象,而只能直接调用Win32(或其操作系统)的API函数。实现的基本思路是(以Win32为例):1、设计一个管理线程,负责接收来自各个“客户”的请求信息(连接、注销);
    2、设计一个数据结构,如称为TTreadParms,类型指针为 PTreadParms=^TTreadParms;
    作为管理线程初始化各个服务子线程的接口,结构内部各个成分的定义由设计者自己完成;但是一定要包括申请客户的标识信息,操作要求,连接参数等;
    3、再以TTreadParms结构为元素定义一个表(数组),
        Type TTreadParmsTab = Array[1..MaxItemCount]
        这个表的项数(MaxItemCount:预定常数)就是管理线程能够管理的最多线程上限;
    4、设计一个(或几个)可以重入的子线程(根据你设计的操作功能设计):
        Function SubThread(Parms:PTreadParms):Thandle;
    5、管理线程在收到客户的请求时,首先检查该客户是否已经有请求在执行(查表、并判别项的标志),如果没有,则锁定一个空表项,填写需要的参数,再以这个表项为初始化参数创建一个子线程:
       BeginThread(,@SubThread, @锁定的表项,);
    6、子线程一建立,立即接管与客户的联系,并且单独完成与客户之间的联络,实现方法与一般的点到点服务并无本质区别;
    7、子线程服务完成,退场处理时首先要释放被管理线程锁定的表项,在进行其他处理。
    8、特别提醒注意的是,这样设计的程序结构复杂,特别是动态关系复杂,要特别注意。
      

  2.   

    你的DELPHI是安装的6.0企业版吗?那里有自带的源代码,直接用就行了。