社区
网络编程
帖子详情
超级郁闷,为什么socket封装到windows服务就不能正常运行了?
antshome
2005-07-31 10:45:19
问题如下:
我在一个对话框程序里调试好了socket的服务端
后来想把程序封装成windows服务,代码是移值过去的
但是不能用
m_pSocket->Create()
m_pSocket->Listen()
都是成功的,
但是接收不到客户端的连接请求(OnAccept)
难道windows服务(win32控制台项目)和普通的MFC程序里,socket用法有什么不一样吗?
...全文
404
15
打赏
收藏
超级郁闷,为什么socket封装到windows服务就不能正常运行了?
问题如下: 我在一个对话框程序里调试好了socket的服务端 后来想把程序封装成windows服务,代码是移值过去的 但是不能用 m_pSocket->Create() m_pSocket->Listen() 都是成功的, 但是接收不到客户端的连接请求(OnAccept) 难道windows服务(win32控制台项目)和普通的MFC程序里,socket用法有什么不一样吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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网络编程》一书。
windows
7安装补丁后,出现的
socket
端口初始化失败
更新
Windows
7补丁后出现
socket
端口初始化失败问题,通过排查网卡驱动、esetminiport及Sun虚拟机等未果。最终通过修改注册表中Winsock2参数解决该问题。
linux与
windows
之间的
socket
编程
本文探讨了编程的本质及其在解决实际问题中的应用价值,特别是通过对比Linux与
Windows
环境下
socket
编程的实践,展示了如何利用计算机自动化减少人力负担。作者分享了在学习Linux编程过程中遇到的挑战,如低配置虚拟机导致的性能限制和跨系统文件复制问题,以及最终通过
socket
编程实现Linux与
Windows
间通信的解决方案。文章强调了作为程序员应该具备的主动解决问题的精神,并讨论了不同编程环境下的差异与适应策略。
socket
设想失败
尝试使用
SOCKET
实现DR-DOS与
Windows
Server 2003之间的通讯遇到困难,最终转向使用FTP进行文件传输作为替代方案。
wince平台把jrtp
封装
到了一起,希望有同仁帮忙测试指导下
本文描述了在Wince平台上使用JRTP进行数据包捕获时遇到的问题,在调试过程中一切正常,但进行数据包捕获时却无法成功。该问题发生在
Windows
Mobile 6环境下。
Windows
程序输入输出重定向到网络
本文探讨了在
Windows
环境下如何通过管道机制实现子进程的输入输出重定向,并对比了不同方法的优劣。从尝试使用CreateFile操作网络端口开始,最终通过CreateProcess设置子进程的输入输出流,实现网络通信。
网络编程
18,356
社区成员
64,161
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章