找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 10306|回复: 34

NT Service问题

[复制链接]
发表于 2009-11-5 18:36:25 | 显示全部楼层 |阅读模式
我想自己写一个NT 服务,用于实现监听接口并接受数据的功能。我改写了ACE/example中的NT_Service的例子,还参考了peakzhang版主的这篇文章

http://www.acejoy.com/bbs/viewthread.php?tid=112

现在已经实现了基本的功能,在NT_Service 的函数start_svc()中启动Service_Config.open()开启静态服务,并监听接口。-s后程序也能正常运行。

但是遇到的问题是我重启电脑以后,在windows服务管理中选择启动服务,客户端都不能正确的连接,查看监听的端口也不在监听中,必须打开控制台 -s 后程序才能正常运行,有没有办法解决这个问题?最好能开机后能自动运行程序而不必手工启动。请大家指点迷津,谢谢
发表于 2009-11-5 19:12:44 | 显示全部楼层

你安装了服务了吗?

一般要安装,在ACE的例子中是 -i,安装后,以后开机才能自动运行啊。
发表于 2009-11-5 21:33:43 | 显示全部楼层
怀疑是服务安装的问题,服务的自动启动看看设置了没有
 楼主| 发表于 2009-11-6 13:58:18 | 显示全部楼层
已经 -i 安装过了
 楼主| 发表于 2009-11-6 14:06:47 | 显示全部楼层
服务也已经标识 “启动” 是不是还要别的什么设置?

我的start_svc()函数是这样写的

int Service::start_svc(ACE_Time_Value *wait_time,
                 DWORD *svc_state ,
                 int argc, ACE_TCHAR *argv[])
{
        ACE_DEBUG ((LM_DEBUG,
              ACE_TEXT ("start_svc\n")));
        int ret=inherited::start_svc(0,0,/*argc,argv*/0,0);

        ACE_STATIC_SVC_REGISTER(HA_Status_Descriptor);
        ACE_Service_Config::open(argc,argv,ACE_DEFAULT_LOGGER_KEY,0);
        ACE_Reactor::instance()->run_reactor_event_loop();
        return ret;
}
 楼主| 发表于 2009-11-6 14:36:19 | 显示全部楼层
我程序的可执行文件名为Win_NT_Service

现在就是我在控制台执行Win_NT_Service -i 然后在执行Win_NT_Service -s 客户端都能够连接上。然后我重启电脑后,检查计算机管理中服务是开启状态,在任务管理器中也有Win_NT_Service的程序运行,但就是所有客户端都连不上,不知是什么方法解决这个问题?

是不是还要什么设置才能使程序在后台运行?
发表于 2009-11-6 15:02:23 | 显示全部楼层
任务管理器,找到Win_NT_Service,右键点击然后选择调试
 楼主| 发表于 2009-11-6 15:23:06 | 显示全部楼层
modern版主 我按照你的方法操作,选择调试后让我运行一个VS的新实例,并没有什么实质的变化啊
发表于 2009-11-6 15:31:56 | 显示全部楼层
如果服务自动启动时候不能访问,先用telnet xxxx xx测试一下是否能够连接上。如果不能连接,表示你的系统程序有故障,没有正常监听。
 楼主| 发表于 2009-11-9 09:35:10 | 显示全部楼层
winston,我telnet果然连接不上,但是我不知道程序那出错误了。我是第一次编写NT服务程序,有些东西不知道是不是理解的准确,我想请问一下系统重启服务自动运行以后,程序的入口点还是start_svc()这个函数吗?
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-12-23 13:11 , Processed in 0.124634 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表