MFC中VC6.0转到VS2010后,每次接收消息都会爆断言错误。

xixix2 2020-01-20 12:01:48
这几天在学MFC网络编程这一块,之前用VC6.0,后来改用VS2010,现在说一下问题:之前VC6.0写好的程序与测试工具连接没问题,收发数据也没有问题,但是换成VS2010可以建立连接,可以发送数据,每次接收都报错,
点击重试,在下面中断了

希望好心人,告诉我哪里出毛病了,查了好几天才查到这。
代码如下:

ON_MESSAGE(CM_RECEIVE,ReceiveInfo)


...全文
194 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
走好每一步 2020-02-07
  • 打赏
  • 举报
回复
引用 6 楼 xixix2 的回复:
[quote=引用 2 楼 走好每一步 的回复:]
vc6.0编译器不严谨,写出来的程序bug也很多的
方便的话发源码给我,帮你调
发给你了,老哥[/quote]

#define CM_RECEIVE 1000
改成
#define CM_RECEIVE (WM_USER+1)

WSAAsyncSelect(m_SockClient, m_hWnd, 1000, FD_READ);
改成
WSAAsyncSelect(m_SockClient, m_hWnd, CM_RECEIVE, FD_READ);
xixix2 2020-01-21
  • 打赏
  • 举报
回复
引用 2 楼 走好每一步 的回复:
vc6.0编译器不严谨,写出来的程序bug也很多的
方便的话发源码给我,帮你调
发给你了,老哥
xixix2 2020-01-21
  • 打赏
  • 举报
回复
引用 1 楼 schlafenhamster 的回复:
buffer 小了 ? 加大试试 (10k)
还是同样错误
zgl7903 2020-01-20
  • 打赏
  • 举报
回复
避免缓冲区溢出, 字符串加0结束

char chBuff[1024+1];
int iRcv = recv(s , chBuff, 1024, 0);
if(iRcv > 0)
{
  chBuff[iRcv]=0;
  ::MessageBoxA(m_hWnd, chBuff, "recv", MB_OK);
}
走好每一步 2020-01-20
  • 打赏
  • 举报
回复
vc6.0编译器不严谨,写出来的程序bug也很多的 方便的话发源码给我,帮你调
schlafenhamster 2020-01-20
  • 打赏
  • 举报
回复
buffer 小了 ? 加大试试 (10k)

18,356

社区成员

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

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