直接运行出错,调试运行为何却可以?

stevenuserregister 2008-09-26 06:37:42
我编写了一个通信显示程序,通信部分放在VIEW类中。初始化SOCKET部分放在ON_CREAT中,在VIEW中析构函数中close掉SOCKET。现在出现了一个问题:调试运行时,程序显示正常;但直接运行却常常出现SOCKET初始化错误。我有几个问题向大家请教:
1、为什么开机第一次直接运行正常后,随后直接运行常常出现SOCKET初始化错误?
2、调试运行时,程序为什么又正常显示?
3、SOCKET初始化代码最好放在VIEW类中,还是DOC类中,或是其它类中(老实说,我不知道它们的区别,似乎都可以)?接收数据代码又应该放在哪个类中(程序是用MFC标准生成)?
4、关闭SOCKET代码放在VIEW的析构函数中是否会执行?放在哪个函数中合适?如果不关闭SOCKET,退出程序时,是否自动关闭?

请大家不吝赐教!
...全文
156 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
woodyk 2008-09-27
  • 打赏
  • 举报
回复
关闭Socket最好放在OnClose或OnExitInstance之类的函数中。

如果不关闭Socket就退出程序,程序会自动帮你关闭,不过有一定延时,很短。

对C/S中的另一方来说,由于你没有通知对方你已经close socket,所以从C/S的一方退出到另一方知道你退出之间的延时就很明显了。
stevenuserregister 2008-09-27
  • 打赏
  • 举报
回复
多谢“哈哈人生”的回复。
如果采用线程接收,接收到数据好,需要发送消息给主线程中的DOC类、VIEW类,POSTMESSAGE(或SENDMESSAGE)中的第一个参数(指向VIEW、DOC)又该如何得到?
oo_v_oo 2008-09-26
  • 打赏
  • 举报
回复
数据接收、数据处理、数据显示实际上是三个不同阶段,
软件中,尽量将关系明确
Thread、View、Doc
习惯上采用线程实现接收

显示的创造socket和关闭socket可能更友好一些,使用菜单命令进行消息映射,把网络处理放在Doc类,至少比放在View更合理

18,356

社区成员

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

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