社区
网络编程
帖子详情
超级郁闷,为什么socket封装到windows服务就不能正常运行了?
antshome
2005-07-31 10:45:19
问题如下:
我在一个对话框程序里调试好了socket的服务端
后来想把程序封装成windows服务,代码是移值过去的
但是不能用
m_pSocket->Create()
m_pSocket->Listen()
都是成功的,
但是接收不到客户端的连接请求(OnAccept)
难道windows服务(win32控制台项目)和普通的MFC程序里,socket用法有什么不一样吗?
...全文
376
15
打赏
收藏
超级郁闷,为什么socket封装到windows服务就不能正常运行了?
问题如下: 我在一个对话框程序里调试好了socket的服务端 后来想把程序封装成windows服务,代码是移值过去的 但是不能用 m_pSocket->Create() m_pSocket->Listen() 都是成功的, 但是接收不到客户端的连接请求(OnAccept) 难道windows服务(win32控制台项目)和普通的MFC程序里,socket用法有什么不一样吗?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
antshome
2005-08-01
打赏
举报
回复
或者告诉我,除了SetTimer这种方法以外,如何定时执行某个操作
antshome
2005-08-01
打赏
举报
回复
to fzd999(花差花差)
看来还只能用API来做了
另外,还要请教一下,为什么服务里不能用SetTimer启动定时器?
darkstar21cn
2005-08-01
打赏
举报
回复
服务程序最好不要使用SetTimer,应该使用一个进程来监听端口。
fzd999
2005-08-01
打赏
举报
回复
antshome(忧郁的苦瓜),我做过类似的事情,由于有太多权限方面的问题没有成功,后来用Socket API,直接事件异步模式解决了问题,开发加单体测试花费时间是两个工作日,建议你不要犹豫不决了,在Service里面弃用MFC中的CSocket,采用Socket API,并不困难的。
antshome
2005-08-01
打赏
举报
回复
TO orbit(走了走了)
我加了调试信息,写到windows日志查看器里,看到的都是正常的
TO fzd999(花差花差)
是你说的意思
本来是没有对话框的,直接是类里封装好的,不行后,我才加了个对话框
另外还有个问题
::SetTimer好像也不能在服务里运行
fzd999
2005-08-01
打赏
举报
回复
antshome(忧郁的苦瓜),我了解你的情况了,你在服务中指定了桌面交互,然后显示了一个对话框,然后对话框上有一个按钮,你想按了它就能创建Socket,是吧?
这里存在一个问题,一是你的对话框是怎么创建的,是直接在Service里面使用MFC类库,还是CreateProcess。假如你是直接使用MFC,那么想在Service中创建套接字是需要重新设置权限的,具体手法比较复杂。假如是CreateProcess,应该可以,可能是你程序哪儿写错了。
原则上还是建议你采用Socket API,一方面MFC封装的并不好,另一方面用Socket API也不容易出错。
王晓华-吹泡泡的小猫
2005-08-01
打赏
举报
回复
在服务中使用MFC是可以的,你是如何确定
m_pSocket->Create()
m_pSocket->Listen()
是调用成功的
antshome
2005-08-01
打赏
举报
回复
可是我是从CDialog继承的对话框
antshome
2005-08-01
打赏
举报
回复
我改用API写了,已经搞定,谢谢各位
softrain
2005-08-01
打赏
举报
回复
“对话框窗体是可以显示出来的,按钮也能响应事件”和MFC是不相关的两件事,用纯win32API也是可以创建窗口应用程序的,而且运行效率比MFC高。
你可以在控制台程序中调用MessageBox,也会弹出窗口。
DentistryDoctor
2005-08-01
打赏
举报
回复
我想,CSocket内部主要用到了消息机制的原因吧。
可以考虑用API,或是自己封装一个类。
Caps77
2005-08-01
打赏
举报
回复
DLL ,多线程,服务,三种情况下使用SOCKET API一般不容易出错,MFC在这三种情况下一直都存在着一些悬而未决的BUG。
antshome
2005-07-31
打赏
举报
回复
对话框窗体是可以显示出来的,按钮也能响应事件
说明Service里是可以用MFC的类库吧
antshome
2005-07-31
打赏
举报
回复
我的程序是Service启动时,有一个对话框弹出来,有两个按钮,单击后启用socket,这样也不行的?
一定要用API来写?
fzd999
2005-07-31
打赏
举报
回复
默认情况下,Service是控制台程序,不能使用MFC类库,因此你不能在服务中使用CSocket类。解决的办法有两个,一是直接使用WinSocket2 API,二是用Service来CreateProcess一个进程,然后在这个进程里面使用CSocket。
建议直接使用WinSocket API,因为MFC封装做的并不好,而且通讯模式也仅限于阻塞和消息异步,其中消息异步一定要和一个窗口绑定,这在Service里面几乎是个无理的要求。至于如何使用Socket API,你可以参考《Windows网络编程》一书。
计算机必要知识
net命令介绍这篇文章综合了
WINDOWS
98,
WINDOWS
WORKSTATION和
WINDOWS
SERVER 三个操作系 统关于NET命令的解释,希望可以全面一些 先说一些: (1)NET命令是一个命令行命令。 (2)管理网络环境、
服务
、用户、登陆。。。。等本地信息 (3)WIN 98,WIN WORKSTATION和WIN NT都内置了NET命令。 (4)但WIN 98的NET命令
怀旧迎新
怀旧迎新
2010年过去了,严格的说,我的计算机生涯度过了1年半了,由一个什么都不知道的
超级
大菜鸟变成了小菜鸟了。
作为启蒙的1年,其重要性是不言而喻,那到底我学到了什么呢?
…………..
菜鸟的第一阶段:
时间在一年前的今天,学习计算机半年了,由于课程的需要学了oracle,看了计算机网络,读了
windows
系统编程。Oracle是只停留在语法阶段,所以1个月不用就会完全忘记;计算机网
Linux运维(十)-2016-12-9整理
也有段时间没有整理面试题目了,这几天呢,完成了2场实习生和1场校招,十分
郁闷
,为什么金融运维一点都不关注技术,在乎我的学校成绩,我尼玛想说,学校那么水的课程能说明什么,跟技术有一丁丁点关系吗?我学业成绩不好,就能否定我的专业岗位基础不行吗?唉,劳资想说,你如果质疑我的能力,你就问我,劳资要是被你虐倒是我算我输,学艺不精我就服,看过去有球用。这辈子职业生涯都不想...
linux test1
初级:
Windows
:
Windows
上
运行
IIS(asp、asp.net、php)由于部分站点经常挂马,请问如何让该类事情有效发生率降低或避免
CPU占有率忽高忽低,导致系统报警,初步判断是某个IIS网站程序编写不规范造成的,请问如何找出该站具有的进程,并对其进行限制?
请列出以下几类虚拟主机托管站点的(1)、IIS+mssql (2)php+mysql (3)java+oracle 采用的web容器、数据库,如何管理,自己日常工作中<
超级
收藏夹
ESFramework 可复用的通信框架(序) 网页中单一表格横纵表头锁定的细节 纯ajax式,多用户选择示例 解决PowerDesigner里允许字段重名约束的设置问题-爽! 实现提交页面后滚动条自动移动问题 C#中的接口 AjaxPro 内部机制探讨 NHibernate Step by Step(二) 单
网络编程
18,363
社区成员
64,187
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章