三层开发中,使用SocketConnection连接AppServer
测试:
    客户端调用远程AppServer时,拔掉客户端网线,客户端会在10秒左右反应,远程主机强制关闭了一个连接;但拔掉服务器端的网线时,客户端永久性死机没反应。为什么不一样呢?
    从客户端的任务管理器中可以看到:客户端程序状态一会显示正在运行,一会显示没有响应,好像在反复执行?为什么?
我测试的目的主要是为了测试网络状况不好时,对远程AppServer接口函数调用的影响,各位高手或许有什么好的建议(网络检测)?谢谢了

解决方案 »

  1.   

    抄过来点,,,呵呵服务端在view --> Type Library 下注册接口如下:    //1。--> 请注意使用Type Library 来注册
    procedure Ttest.GetData( out vData: OleVariant);    //2。--> 定义procedure,参数是 out 类型
    begin            
      ADOQuery1.Close;
      ADOQuery1.SQL.Clear;
      ADOQuery1.SQL.Add(' select * from TUser ');
      ADOQuery1.Open;
      vData := DSP.Data;                               //3。--> DSP连ADOQuery1,返回 OleVariant 类型
    end;客户端调用如下:
    procedure TMianForm.GetDataBtnClick(Sender: TObject);
    var vd: OleVariant;
    begin
      SocketConncetion.AppServer.GetData(vd);         // 4。-->此处调用服务端接口,执行查询
      ClientDataSet1.Open;                            // 5。-->显示数据
    end;其中,客户端的ClientDataSet1的ProviderName设置连接服务端的DSP。  这样假如你客户端的ClientDataSet1连有数据敏感控件如DBGrid等,
    就会在DBGrid中看到从服务端传过来的数据。
      

  2.   

    to lyguo(愚人(每天顶几顶挣分升星星)): ??
    那位大虾能说说的?这个问题迷惑好久,也问了好久了,贴子很多,分不够的话会在其他贴专门给分
    只为解决问题,谢谢了
      

  3.   

    在Delphi的IDE(开发环境)里面运行你的应用程序,编译时使用Debug模式链接,即通过[Project]菜单项[Options...],转到[Compiler],转到[Debugging]选项卡找到[Use Debug DCUs]选项,然后选上(勾取该项),然后F9运行,接着断开网线,然后进行一步步跟踪调试。最好还附加一些能够查看网络连接之类的相关工具。
      

  4.   

    To unsigned(僵哥(当程序语言成为普及的第三语言之后……)) :
    有什么样的查看网络连接工具好使的呢?我测时时,发现只要客户端与交换机之间连上
    服务器端与交换机网络中断(拔网线)时,客户端就一直在运行,没法检测到服务器端的返回,导致程序死机