返回信息流想做一个界面,能一边发送消息,一边接受消息。我用开辟新线程的方式来实现等待接受消息的逻辑。结果在Receive()函数的时候出现一个Assertion Failed的错误(如附图)。后来调试发现,可能是由于调用Receive()函数的时候网络数据还没到达引起的这个错误。但如果在主线程里使用这个函数,就不会出现这样的错误。程序就会在Receive()这个函数停住等待网络数据。求问大神这通常是什么原因引起的呢?
这是一条镜像帖。来源:北邮人论坛 / cpp / #88515同步于 2015/9/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
MFC多线程使用socket的时候,receive出现Assertion Failed是怎
l6292
2015/9/8镜像同步11 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 nuanyangyang 的大作中提到: 】
: 多线程这东西……很危险,初学者不建议尝试。尤其是用C/C++的。
额,那不用多线程,这样的逻辑,在发信息的同时还能够一直接收信息,一般还能用什么实现呢?
mfc的socket是不是有异步通信机制?等能接收的时候发送一个消息,用消息处理函数来处理?
另外,一定用mfc吗?
【 在 l6292 的大作中提到: 】
: 额,那不用多线程,这样的逻辑,在发信息的同时还能够一直接收信息,一般还能用什么实现呢?
【 在 nuanyangyang 的大作中提到: 】
: mfc的socket是不是有异步通信机制?等能接收的时候发送一个消息,用消息处理函数来处理?
: 另外,一定用mfc吗?
:
mfc拖界面不是还方便嘛[em71],要不然直接调用api吗?
通信是比较难搞的,建议
1.看看你的指针是否为空
2.检查变量作用范围,内存释放没有
3.socket是否真的接收到数据,多长
……
发自「贵邮」
【 在 shan10211865 的大作中提到: 】
: 通信是比较难搞的,建议
: 1.看看你的指针是否为空
: 2.检查变量作用范围,内存释放没有
: ...................
前两点应该是没有问题的。就是最后接收数据的时候,好像在多线程里,只要数据还没传过来,调用这个函数就会报错。我在接收语句前面加上个一秒的延时,或者调试加个断点,反正只要等数据传过来调用Receive()函数就不会报错了。但是在主线程的时候,数据没传过来调用Receive()也不会报错,会一直等下去,很是诡异啊~~