CSOCKET的超时设置和UDP发送接收

    使用CSoket多次了,但对于它的block模式的理解并不是很深入。昨天使用csoket的udp多发测试(server接到数据后,需要通过某种方式将数据发送到client,使用tcp方式比较可靠,我一直这样用的,但是比较费时,需要逐一发送),发现了问题:

  1)create(),sendto(),receivefrom()....

  2)其中,发送方一直定时发送数据无问题;

  3)而接收方,通过一个单独的接收线程实现( 注意:csocket不能跨线程使用!主线程中socket create()后,detach()并将sock作为lpvoid传入接收线程 )。代码如下:

  //处理接收数据
UINT CSockSvr::DealSvrRevData(LPVOID lParam)
{

  ......
 DWORD dwError;
 TCHAR cBuff[1000];
 CString sIP;
 UINT uPort;
 for(;!pDlg->m_bExit;)
 {
  ::memset( cBuff,0,sizeof(cBuff) );

  // 如果没有接到数据,一直等待。。。。
  // 阻塞模式的弊端:::在退出时候,通过CancelBlockingCall
   int iRst=SockSvr.ReceiveFrom( cBuff,sizeof(cBuff),sIP,uPort,0 );
    if( iRst!=SOCKET_ERROR )
  {
   CString sTemp=cBuff;
   TRACE1( _T("/r/n Rev Data: %s/r/n"),sTemp );
  }
  else
  {
   dwError=GetLastError();
   TRACE1( _T("/r/n Rev Data Error code: %d/r/n"),dwError );
  }
  ::Sleep(200);
 }
 
 return 0;
}

  问题:如果发送

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值