在Windows系统服务(Windows NT Service)中使用CAsyncSocket的问题

involute 2006-06-08 02:56:52
自己做了一个可以支持MFC的系统服务,没有用ATL的COM架构。

在ServiceMain中建立了一个CAsyncSocket对象,调用Create成功并用Connect试图连接到另一台服务器。
服务器端收到了连接请求并Accept了(可以保证服务器端代码无问题)。

但是在服务中的CAsyncSocket对象始终没有响应OnConnect函数,百思不得其解。

不知道是不是因为CAsyncSocket不是一个线程安全对象的原因。

且该对象未经改动在其他Windows程序(不是服务)中工作正常。

而我重写了CAsyncSocket并用WSAEventSelect和WSAWaitForMultipleEvents代替了原来的CAsyncSocket中的消息泵以后,该对象在服务中可以工作了,但是不稳定。

所以我想请教各位达人,CAsyncSocket为什么在Windows NT Service中工作不正常呢?
...全文
310 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
involute 2006-06-09
  • 打赏
  • 举报
回复
"允许与桌面交互"尝试失败

CASyncSocket可以自己调用AfxSocketInit,所以我没有写Socket初始化代码.

按照你所说,我使用了AfxSocketInit,仍没有效果.

按理说,CSocket也是用的CAsyncSocket的消息泵,但是在我的服务中就可以使用.

因为我使用的CAsyncSocket的派生类是一个已经添加了大量代码的一个现成的类,不想用同步Socket修改程序结构了,我还是回去继续老老实实改写CAsyncSocket的消息泵机制吧.

快哭了...
involute 2006-06-09
  • 打赏
  • 举报
回复
我跟了,SocketWnd是创建成功了的

我现在去尝试一下"允许与桌面交互"
Kudeet 2006-06-09
  • 打赏
  • 举报
回复
判断CAsyncSocket的内部窗口对象CSocketWnd是否创建成功,你用什么初始化的socket。试试AfxSocketInit
an_bachelor 2006-06-09
  • 打赏
  • 举报
回复
那你把服务设置成允许与桌面交互看看
involute 2006-06-09
  • 打赏
  • 举报
回复
自己再顶一次,争取让人赚这200分。
toxyboy 2006-06-08
  • 打赏
  • 举报
回复
估计是Service对窗口消息的支持有问题.
WecanHuang 2006-06-08
  • 打赏
  • 举报
回复
up
奥爸 2006-06-08
  • 打赏
  • 举报
回复
CAsyncSocket 只有在有窗口才能选择,CAsyncSocket 利用窗口消息的
写服务程序 用其他的
involute 2006-06-08
  • 打赏
  • 举报
回复
顶自己的问题,200分阿,没人要吗?
Eddie005 2006-06-08
  • 打赏
  • 举报
回复
顶~~~
飞天揽月 2006-06-08
  • 打赏
  • 举报
回复
高人

18,363

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧