if(pm->bReady == TRUE)
{

while(!bStop)
{
ret = Send(buf,DATASIZE);
if(ret>0)
(*m_pSent) += ret;
}
}
当DATASIZE改为小于70字节就可以,要不然发了1秒就出现错误

解决方案 »

  1.   

    你要检查数据是否成功发送完毕了ret==DATASIZE 才OK啊
      

  2.   

    首先,看看报的是什么错第二,Send完了以后最好Sleep(10),要不然数据量太大,接受端会down掉的
      

  3.   

    是的,发送太快
    你可以直接把你的数据一次性send。
      

  4.   

    BOOL CSocket::PumpMessages(UINT uStopFlag)
    {
    // The same socket better not be blocking in more than one place.
    ASSERT(m_pbBlocking == NULL); _AFX_SOCK_THREAD_STATE* pState = _afxSockThreadState;--> ASSERT(pState->m_hSocketWindow != NULL); //调试出错的地方 BOOL bBlocking = TRUE;
    m_pbBlocking = &bBlocking;
    CWinThread* pThread = AfxGetThread();
      

  5.   

    这个最好直接用api,用mfc中的csocket会阻塞的。
      

  6.   

    if(ret<0)
     sleep(20)
    20应该对测试性能的影响不太大吧,不然就用非堵塞+SELECT来做,也非常好。
      

  7.   

    WA SAI,硕士生呀。好牛B。怎么还叫小女子,也不小了吧。以后多向你请教请教,我昨天小学刚毕业。不过基础很扎实,小学一共学了10年。他们要塞毕业证书给我,我都没要。
      

  8.   

    if(ret<0)
     sleep(2)吧。
    还有用MFC来测的话,不太好,直接用API速度才比较正确一点。
      

  9.   

    现在用send,api发,每次发送100字节就很高,1000字节反而就低了.
      

  10.   

    sevencat(七猫) 小学毕业就玩c++,我好佩服你啊
      

  11.   

    哈哈,佩服呀,sevencat(七猫) ,你的情商一定非常非常高
      

  12.   

    sevencat(七猫),哈哈,玩上了
    觉得应该用非阻塞式的
      

  13.   

    我想问清楚是tcp还是udp先啊?hehe