非阻塞recvfrom的设置

本文探讨了如何设置非阻塞recvfrom函数,并在人工智能领域中使用它。教程适合零基础的学习者,内容生动有趣,旨在引导更多人加入人工智能的学习行列。
摘要由CSDN通过智能技术生成
               

 

       我想用 UDP 阻塞模式给硬件设备发包,然后收包。因为网络的问题,经常丢包,也就是发了之后没有响应。这样的话, recvfrom 会一直停在那里,死机了一样。           能不能设成超时自动返回,或者其它什么解决办法,谢谢!            我不想用非阻塞模式,据说比较耗资源。
 
// 连接超时   
          //--------------------------------------------------------------------------  
          // 设置为非阻塞方式连接   
          unsigned   long   ul   =   1;  
          int   ret   =   ioctlsocket(m_sSocket,   FIONBIO,   (unsigned   long*)&ul);  
          if(ret   ==   SOCKET_ERROR)  
          {  
                  err   =   WSAGetLastError();  
      closesocket(m_sSocket);  
      m_sSocket   =   NULL;  
      return   FALSE;  
          }  
   
 Struct timeval   timeout   ;     //   超时结构   
          fd_set  r;                                              
   
          FD_ZERO(&r);  
          FD_SET(m_sSocket,   &r);  
          timeout.tv_sec   =   iTimeout;       //   连接超时设置   
          timeout.tv_usec   =0;  
   
          connect(m_sSocket,(LPSOCKADDR)&server,sizeof(SOCKADDR));  
          ret   =   select(0,   0,   &r,   0,   &timeout);      
          if   (   ret   <=   0   )  
          {  
      err   =   WSAGetLastError();  
      closesocket(m_sSocket);  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值