我编写了一个通信显示程序,通信部分放在VIEW类中。初始化SOCKET部分放在ON_CREAT中,在VIEW中析构函数中close掉SOCKET。现在出现了一个问题:调试运行时,程序显示正常;但直接运行却常常出现SOCKET初始化错误。我有几个问题向大家请教:
1、为什么开机第一次直接运行正常后,随后直接运行常常出现SOCKET初始化错误?
2、调试运行时,程序为什么又正常显示?
3、SOCKET初始化代码最好放在VIEW类中,还是DOC类中,或是其它类中(老实说,我不知道它们的区别,似乎都可以)?接收数据代码又应该放在哪个类中(程序是用MFC标准生成)?
4、关闭SOCKET代码放在VIEW的析构函数中是否会执行?放在哪个函数中合适?如果不关闭SOCKET,退出程序时,是否自动关闭?请大家不吝赐教!
1、为什么开机第一次直接运行正常后,随后直接运行常常出现SOCKET初始化错误?
2、调试运行时,程序为什么又正常显示?
3、SOCKET初始化代码最好放在VIEW类中,还是DOC类中,或是其它类中(老实说,我不知道它们的区别,似乎都可以)?接收数据代码又应该放在哪个类中(程序是用MFC标准生成)?
4、关闭SOCKET代码放在VIEW的析构函数中是否会执行?放在哪个函数中合适?如果不关闭SOCKET,退出程序时,是否自动关闭?请大家不吝赐教!
软件中,尽量将关系明确
Thread、View、Doc
习惯上采用线程实现接收显示的创造socket和关闭socket可能更友好一些,使用菜单命令进行消息映射,把网络处理放在Doc类,至少比放在View更合理
如果采用线程接收,接收到数据好,需要发送消息给主线程中的DOC类、VIEW类,POSTMESSAGE(或SENDMESSAGE)中的第一个参数(指向VIEW、DOC)又该如何得到?