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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ASP.NET中使用UpdatePanel实现局部异步刷新方法和攻略「建议收藏」

    ASP.NET中使用UpdatePanel实现局部异步刷新方法和攻略「建议收藏」转载自:ching126,http://blog.csdn.net/chenhongwu666/article/details/41392529asp.netUpdatePanel实现异步局部刷新如有雷同,不胜荣欣,若转载,请注明鉴于最近项目需要,研究了一下UpdatePanel控件的使用方法,现总结如下,可能有很多地方不足,还望大家斧正哦,此文的目的也是为了

    2022年7月23日
    21
  • 白话空间统计二十四:地理加权回归(二)

    白话空间统计二十四:地理加权回归(二)六千多字的大篇……诚意满满啊……橘生淮南则为橘,生于淮北则为枳,叶徒相似,其实味不同。所以然者何?水土异也。——《晏子春秋·内篇杂下》水土不服、南北差异,(包括地域歧视)是自古以来的一个大命题……正如在(伪)吃货的眼中,中国的地图是这样的:为什么说上面是伪?吃货呢,因为在真?吃货眼中的中国地图,是这样的:这就是具有全局眼(胃)光(口)和局部眼(胃)光(口),

    2022年10月7日
    2
  • 装上这 8 个插件,PyCharm才真的是无敌的存在!

    装上这 8 个插件,PyCharm才真的是无敌的存在!给IT入门加星标,提升编程技能ChinesePlugin经常听到很多初学者抱怨说,PyCharm怎么是全英文的?学起来好难啊。在以前,我会跟他们说,学习编程语言,英文是一项非常重要的能…

    2022年6月24日
    29
  • switch 中 break 和 continue 的区别[通俗易懂]

    switch 中 break 和 continue 的区别[通俗易懂]1、break用来退出switch,continue本身是不能用在switch里的,他必须结合循环来用,表示跳过本次循环2、switch的case语句最后如果没有加break/continue,则程序会一直往后执行,可以借鉴goto跳转到位置,其实switch本身可以看作某种形式的跳转,而C语言中本身是不执行:的那条语句的,例如,如果程序中出现一条语句wtch…

    2022年6月2日
    91
  • cefsharp教程_flutter grpc

    cefsharp教程_flutter grpc需求注册常规快捷键比如F5刷新F12打开开发者工具; 自定义配置文件; 注册JavaScript交互API通过Winform调取设备或者系统数据; 屏蔽鼠标右键; 自定义文件下载功能; 集成自动更新服务;…

    2022年9月18日
    2
  • Java数组初始化数值

    Java数组初始化数值初始化变量 publicstatic String args int numbers newint 8 实际上 上面的代码的目的就是做了一个数组的初始化 这个初始化的作用就是开辟了该长度的存储空间 这个概念我们经常会混淆 这里还是希望大家有个印象 数组初始化完后 并没有存储实际的值 int 类型的数据默认值是 0 所以如果没有完成数组的赋值 那么 int 数组的每一个值都是 0 String 类型的数据默认值是 null 所以没有赋值 那么 Stri

    2025年11月12日
    3

发表回复

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

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