我做了个NTService,运行正常,做了个用ClientSocket连接服务器的程序正常,但是,当我
把ClientSocket程序转移到NTService,服务可以正常启动,可是碰到以下问题:1。ClientSocket连接服务器错误,连不上;2。服务关闭时出现错误。请大家帮忙看看,我已经困惑好久了

解决方案 »

  1.   


    请描述清楚。
    你的意思是不是说 你单独做NT SERVICE的时候是成功的
    做ClientSocket应用程序也是成功的可是..却有问题贴出你将 ClientSocket程序转移到NTService 的主要代码
    包括
    1. 创建服务之类的
    2. Socket的连接代码
    3. 关闭时候的代码 已经错误信息。。
      

  2.   

    我是说我单独作了个NTService测试程序,正常;单独作了个用ClientSocket连接服务器的程序,正常;当我
    把ClientSocket程序移植到NTService,服务可以正常启动,可是碰到以下问题:1。ClientSocket连接服务器错误,连不上;2。服务关闭时出现错误。
    请大家帮忙下边是我的代码:procedure TServiceSMS.SMSStart;
    begin
      FIP := '211.136.11.111';
      FPort := 8012;
      ClientSocket.Address := FIP;
      ClientSocket.Port := FPort;  Write_Log('开始连接服务器....');
      for i := 0 to 4 do
      begin
        if ClientSocket.Active then
          ClientSocket.Active := true;
        sleep(1000);
        Write_Log('尝试连接....');
        if ClientSocket.Active then break;
      end;
      if ClientSocket.Active then
        write_Log('连接成功!')
      else
        write_Log('连接失败!');
    end;procedure TServiceSMS.SMSStop;
    begin
      with ClientSocket do
      begin
        if Active then
          Active := false;
      end;
    end;procedure TServiceSMS.ServiceStart(Sender: TService; var Started: Boolean);
    begin
      SMSStart;
      started := true;
    end;procedure TServiceSMS.ServiceExecute(Sender: TService);
    begin
      while not Terminated do
      begin
        if not ClientSocket.Active then
          SMSStart;
        sleep(60000);
      end;
    end;procedure TServiceSMS.ServiceStop(Sender: TService; var Stopped: Boolean);
    begin
      SMSStop;
      Stopped := true;
    end;
      

  3.   

    好的 看到了我没写过DELPHI的NT SERVICE程序, 写过VC的,没有DELPHI的这类封装我需要去看看TService的代码
      

  4.   

    谢谢,我发现clientSocket这个控件不好用,我用一般的应用程序测试,
    procedure TForm3.Button1Click(Sender: TObject);
    var
      i: integer;
    begin
      for i := 0 to 4 do
      begin
        if not ClientSocket1.Active then
          ClientSocket1.Active := true;
        sleep(1000);
        Memo1.Lines.Add('尝试连接....');
        if ClientSocket1.Active then break;
      end;
      if ClientSocket1.Active then
        Memo1.Lines.Add('连接成功!')
      else
        Memo1.Lines.Add('连接失败!');
    end;
    总是返回连接失败,有一个奇怪的现象,就是我第二次点击按钮时,已经连接成功!
      

  5.   

    连接判断我解决了,通过设置clientSocket的clienttype=ctBlocking。
    NTService关闭出错?请大家帮忙
      

  6.   

    我做的开始install就提示:帐户名无效或不存在,或者密码对于指定的帐户名无效怎么回事呢
      

  7.   

    TO sam51:
    你如果是超级管理员用户身份,用户名和密码可以默认为空,不用设置
      

  8.   

    你把ServiceStop中代码都注释掉,还会不会出现呢?
    {
      SMSStop;
      Stopped := true;
    }
    是地址错误吗?