解决方案 »
- 对话框中的网页事件
- MFC编程,设置ListCtrl控件(Report类型)的行高,总是不成功,麻烦大家帮忙看下。(代码只有几行)
- vs2008上面CToolBar问题
- 请问:能否在静态函数中调用非静态变量呢?
- 求救,这个问题不算难,但要有经验才知道哦!
- ntgraph控件使用的问题
- 如何做这样的界面,有没有实例?
- 送分喽!343346346
- 我想知道我能值多少钱......
- 小弟主框架是用的CFormView,我想在一个click事件后关闭这个框,再打开另外一个对话框做主框架,应该如何做?
- CRichEditCtrl调用SetFocus后光标总是在最后一列,如何再回到第一列?
- vc++2010类向导问题
客户端发送给服务端的心跳包还是都可以正常接收到的;只有服务端发给客户端的数据收不到了,服务端发送时一直返回错误WSAEWOULDBLOCK;
就像假如程序有内存泄漏,把系统虚拟内存从1G改成10G,系统崩溃的确变慢了,但是到了10G的时候还是得歇火,无助于解决问题
服务端播放线程将数据,PostMessage给主线程,主线程用得到的数据打包,计算数据效验值TRACE显示,通过CAsyncSocket发送;
客户端主线程收到数据,PostMessage给处理线程,处理线程解包,也计算数据的效验值TRACE显示,播放;TRACE看到效验值,每次发送的和接收的都是相邻的并且相同的值,只是某个时候的一份数据发送成功,却接收不到了,后面就是WSAEWOULDBLOCK;缓冲区大小的情况,我也大概觉得是把缓冲区弄的有点问题,具体就不明白怎么回事了。
通过这些信息观察和分析
具体的要看你的程序实现了
打印信息trace就可以
通过这些信息观察和分析
具体的要看你的程序实现了
打印信息trace就可以
m_nCheckLastSend = 0;
for (int i = nWriteDataCount - 1; i >= 0; --i)
m_nCheckLastSend += *(pWriteData + i);同样每次接收成功也做这样的效验
m_nCheckLastReceive = 0;
for (int i = nReadDataCount - 1; i >= 0; --i)
m_nCheckLastReceive += *(pReadData + i);每次发送成功时,TRACE显示发送的效验值m_nCheckLastSend;接收成功时,也TRACE显示接收到的效验值m_nCheckLastReceive,输出看到每次发送和接收都是相邻的,并且两个效验值也相等,比如这样:
Last Send check is 2413628.
2413628 is the Last Receive check.
Last Send check is 2314141.
2314141 is the Last Receive check.看来除了心跳检测,自动重连外,我没别的办法了……
// 发送成功时:
m_nCheckLastSend = 0;
for (int i = nWriteDataCount - 1; i >= 0; --i)
m_nCheckLastSend += *(pWriteData + i);// 接收成功时:
m_nCheckLastReceive = 0;
for (int i = nReadDataCount - 1; i >= 0; --i)
m_nCheckLastReceive += *(pReadData + i);// 控制台打印信息
Last Send check is 2497820.
2497820 is the Last Receive check.
Last Send check is 2503796.
2503796 is the Last Receive check.