登录站点

用户名

密码

SOCKET 收发数据体会

已有 406 次阅读  2010-07-23 16:39   标签SOCKET  收发  数据  体会 
SOCKET 收发数据
 
1、发送端在Send的时候要检查每次每次发送的数据长度是否达到了总的数据长度。若没有达到,则继续发送剩下的内容直到所有的数据全部发送完毕。而且在每次Send之后加一个延时,否则数据发送就不对,延迟时间多少合适要看情况而定。
例如:
while(pSocket->m_iCountLength<sizeof(g_TestResult))
   {
    int sndLen=send(pSocket->m_socket,(char*)(&g_TestResult)+pSocket->m_iCountLength,sizeof     (g_TestResult)-pSocket->m_iCountLength,0);
    Sleep(1000); //每次发送前给个延迟
    pSocket->m_iCountLength=pSocket->m_iCountLength+sndLen;
   }
2、接收方同样要检查接收到的数据长度,直到所有数据接收完毕。在检查是否有读取事件的时候要给合适的延迟。
 
 TIMEVAL aTime1;
  aTime1.tv_sec = 2;
  aTime1.tv_usec = 0;
  ret = select(0,&fdRead,NULL,NULL,&aTime1);
 

上一篇: 用skinmagic给VC6开发的软件换肤 下一篇: VC6.0 -> DDK_XP -> DriverStudio3.2

分享 举报