nonblock recvfrom

nonblock recvfromif(-1==fcntl(iSocketfd,F_SETFL,O_NONBLOCK)){ printf(“fcntlsocketerror!\n”); return-1;}intiSocketLen=sizeof(structsockaddr_in);/*setrecvfromfromservertimeout*/structti

大家好,又见面了,我是你们的朋友全栈君。

if (-1 == fcntl(iSocketfd, F_SETFL, O_NONBLOCK))
{

 printf(“fcntl socket error!\n”);
 return -1;
}
int iSocketLen = sizeof(struct sockaddr_in);

/* set recvfrom from server timeout */
struct timeval tv;
fd_set readfds;
for(;;)
{

 tv.tv_sec = TIME_OUT_TIME;
 tv.tv_usec = 0;
 FD_ZERO(&readfds);
 FD_SET(iSocketfd, &readfds);
 if (select(iSocketfd+1,&readfds,NULL, NULL, &tv) > 0)
 {

  iRecvNum = recvfrom(iSocketfd,(void *)stRecvBuf,sizeof(*(stRecvBuf)),0,    (struct sockaddr *)stRemote,&iSocketLen);
  if (-1 == iRecvNum)
  {

   printf(“received data error!\n”);
  }
  printf(“iRecvNum is %d\n”,iRecvNum);
 }
 else
 {

  printf(“timeout!there is no data arrived!\n”); //return -1
 }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163456.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 后台管理系统登录思路「建议收藏」

    后台管理系统登录思路「建议收藏」一般来说我们不管是做后台管理,还是做普通项目,必不可少的其实就是登录。那么登录又是怎么实现的呢?废话不多说,上代码。首先我们把登录接口封装在一个文件里,如果这个接口有必备的参数,我们就得传参,然后在登录页引入调用。其次就是我们在登录页写登录框信息,这时候就需要接收接口必备的参数,那具体怎么接呢?先在data里设置两个放置参数的空数组。然后在登录信息框中外围prop接收,然后在信息框上v-model获取用户信息。在一个就是当我们填完用户信息的时候做什么逻辑:首先就是调用封装好的登录接口,其次在登录成功

    2022年5月8日
    73
  • swoole源码安装步骤

    swoole源码安装步骤

    2022年2月12日
    40
  • 通信网络基础pdf_通信网络系统基础

    通信网络基础pdf_通信网络系统基础目录TCP通信概述服务端架构客户端架构应用层协议客户端连接服务端(错误示范)UDP通信概述程序结构通信数据处理TCP通信概述TCP通信双方在进行数据交换之前,先要建立连接,连接建立后,通信双方之间相当于有一条隧道,数据按顺序在该隧道中传输,数据传输完毕后,双方可以选择关闭隧道,连接结束。TCP通信编程中,“请求方”主动连接“被请求方”,该过…

    2022年9月21日
    1
  • Android mtk_Android开发app

    Android mtk_Android开发appstaticstructSET_PD_BLOCK_INFO_Timgsensor_pd_info_1920_1080={ .i4OffsetX =16,//xoffsetofPDarea .i4OffsetY =12,//yoffsetofPDarea .i4PitchX =16,//xpitch/widthofaPDblock .i4PitchY =16,//ypitch/heightofaPDblock .i

    2022年9月7日
    0
  • String数组初始化

    String数组初始化在java中,声明一个数组时,不能直接限定数组长度,只有在创建实例化对象时,才能对给定数组长度.。如下,1,2,3可以通过编译,4,5不行。而String是Object的子类,所以上述BCF均可定义一个存放50个String类型对象的数组。1.Stringa[]=newString[50];2.Stringb[];3.charc[];4.Stringd[50];5.char…

    2022年7月18日
    14
  • webstorm插件开发

    webstorm插件开发前言最近有开发webstrom插件的需求,可是百度一下发现网上关于webstorm插件开发的文章实在是寥寥无几,本文记录一下本次插件开发走的路和踩的坑。希望对后来的同学能有些许的帮助。正文准备工作intelliJ平台的所有插件开发都是基于java语言,所以在进入开发工作之前必须对java语言有一定的了解,本人作为java门外汉,花…

    2022年9月8日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号