想做一个开机启动的Windows服务程序,开机就运行,然后初始化socket等工作并与一个客服端(已经在wait中的)建立连接,然后能够简单的通信,相当于客服端可以接受到其发送的信息,相当于客服端监控这个服务端,当然该本地的Windows服务程序时没有界面的,可以在服务中看到,不能再进程中看到,是不是可以用ATL创建一个Windows服务程序,大家能不能给我说说这方面的思路……
    public:
HRESULT RegisterServer(BOOL bRegTypeLib, BOOL bService);
HRESULT UnregisterServer();
void Init(_ATL_OBJMAP_ENTRY* p, HINSTANCE h, UINT nServiceNameID, const GUID* plibid = NULL);
    void Start();
void ServiceMain(DWORD dwArgc, LPTSTR* lpszArgv);
    void Handler(DWORD dwOpcode);
    void Run();
    BOOL IsInstalled();
    BOOL Install();
    BOOL Uninstall();
LONG Unlock();
void LogEvent(LPCTSTR pszFormat, ...);
    void SetServiceStatus(DWORD dwState);
    void SetupAsLocalServer();
    void Adder();
//Implementation
private:
   static void WINAPI _ServiceMain(DWORD dwArgc, LPTSTR* lpszArgv);
    static void WINAPI _Handler(DWORD dwOpcode);// data members
public:
    TCHAR m_szServiceName[256];
    SERVICE_STATUS_HANDLE m_hServiceStatus;
    SERVICE_STATUS m_status;
DWORD dwThreadID;
BOOL m_bService;    在ATL建立的这个CServiceModule类中,在哪里来添加socket等相关初始化,建立连接,接受客服端接受的命令等的信息呢……
   非常的感谢……

解决方案 »

  1.   

    ServiceMain() 服务主函数循环中可以初始化socket,建立连接,以及等待客户端请求,也可以开线程来做
      

  2.   

    我用C#写过
    C#更便于这方面的开发吧,建议楼主试试
    注意几点:
    1.需长时间运行的操作还是开线程来做吧,要不在服务模式下很容易产生意想不到的错误
    2.不能上来就尝试连接服务器,需要先检查本地网络设置,DHCP分配的IP是否可用等等