如何写一个带Socket服务器的NTService? 就像IIS那样的 有资源或例子都行!? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://codeguru.earthweb.com/system/nt_service.shtml 微软的msdn中有关于service的例子,还有一个叫做wfc的类库,封装了很多的东西,想service等,也封装成了类,你可以看一下。 其实SOCKET程序一般的程序实现方法一样。只是SERICE具体的启动方法,和执行的入口不一样而已。 void WINAPI ServiceMain(DWORD argc, LPTSTR *argv){ serviceStatus.dwServiceType = SERVICE_WIN32; serviceStatus.dwCurrentState = SERVICE_START_PENDING; serviceStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP; serviceStatus.dwWin32ExitCode = 0; serviceStatus.dwServiceSpecificExitCode = 0; serviceStatus.dwCheckPoint = 0; serviceStatus.dwWaitHint = 0; serviceStatusHandle = RegisterServiceCtrlHandler(SERVICE_NAME, ServiceCtrlHandler); if (serviceStatusHandle == (SERVICE_STATUS_HANDLE)0) return; serviceStatus.dwCurrentState = SERVICE_RUNNING; serviceStatus.dwCheckPoint = 0; serviceStatus.dwWaitHint = 0; if (!SetServiceStatus (serviceStatusHandle, &serviceStatus)) return; //初始化网络侦听函数 InitSocketServer(); //////////////////////////////////////////////////////// // Service is now running, perform work until shutdown bRunning = true; while(bRunning) Sleep(5000); return; }void WINAPI ServiceCtrlHandler(DWORD Opcode){ switch(Opcode) { case SERVICE_CONTROL_PAUSE: serviceStatus.dwCurrentState = SERVICE_PAUSED; break; case SERVICE_CONTROL_CONTINUE: serviceStatus.dwCurrentState = SERVICE_RUNNING; break; case SERVICE_CONTROL_STOP: serviceStatus.dwWin32ExitCode = 0; serviceStatus.dwCurrentState = SERVICE_STOPPED; serviceStatus.dwCheckPoint = 0; serviceStatus.dwWaitHint = 0; SetServiceStatus(serviceStatusHandle, &serviceStatus); ExitSocketServer(); //exit service and close resource bRunning = false; break; } return; } CMFCStatusBar这个类型是否不能对对话框使用? 想知道网络队战平台的实现原理? socket send 的疑问 文本文件中数字类型数据的读取问题--在线等 关于CSplitterWnd静态拆分窗口的两个小问题 求VC Hough检测圆的代码 ★★★★★★★为什么注册表中明明有三项,却只能读出两项★★★★★★★ 如何取得可连接点对象的指针!!! 请教:使用静态库和使用动态库的静态链接,这两种方法的效果有什么不同吗? 加载DLL问题!! 请教高手——图片如何转换成视频? 以 *.rar 为扩展名 的文件用什么浏览器可以打开啊?
{
serviceStatus.dwServiceType = SERVICE_WIN32;
serviceStatus.dwCurrentState = SERVICE_START_PENDING;
serviceStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP;
serviceStatus.dwWin32ExitCode = 0;
serviceStatus.dwServiceSpecificExitCode = 0;
serviceStatus.dwCheckPoint = 0;
serviceStatus.dwWaitHint = 0;
serviceStatusHandle = RegisterServiceCtrlHandler(SERVICE_NAME, ServiceCtrlHandler);
if (serviceStatusHandle == (SERVICE_STATUS_HANDLE)0)
return; serviceStatus.dwCurrentState = SERVICE_RUNNING;
serviceStatus.dwCheckPoint = 0;
serviceStatus.dwWaitHint = 0;
if (!SetServiceStatus (serviceStatusHandle, &serviceStatus))
return;
//初始化网络侦听函数
InitSocketServer(); ////////////////////////////////////////////////////////
// Service is now running, perform work until shutdown
bRunning = true;
while(bRunning)
Sleep(5000); return;
}void WINAPI ServiceCtrlHandler(DWORD Opcode)
{
switch(Opcode)
{
case SERVICE_CONTROL_PAUSE:
serviceStatus.dwCurrentState = SERVICE_PAUSED;
break;
case SERVICE_CONTROL_CONTINUE:
serviceStatus.dwCurrentState = SERVICE_RUNNING;
break;
case SERVICE_CONTROL_STOP:
serviceStatus.dwWin32ExitCode = 0;
serviceStatus.dwCurrentState = SERVICE_STOPPED;
serviceStatus.dwCheckPoint = 0;
serviceStatus.dwWaitHint = 0;
SetServiceStatus(serviceStatusHandle, &serviceStatus); ExitSocketServer(); //exit service and close resource bRunning = false;
break;
}
return;
}