FIONREAD 判断 socket有多少数据可读[通俗易懂]

FIONREAD 判断 socket有多少数据可读[通俗易懂]Ioctl(sockfd,FIONREAD,&npend); /*checkFIONREADsupport*/检查sockfd表示的文件描述符中有多少数据可以读取

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

Ioctl(sockfd, FIONREAD, &npend);	/* check FIONREAD support */

检查 sockfd 表示的文件描述符中有多少数据可以读取

example

#include <stdio.h>
#include <unistd.h>
#include <poll.h>
#include <sys/ioctl.h>

int main()
{
    struct pollfd poll_fd;
    poll_fd.fd=0;
    poll_fd.events=POLLIN;
 
    for(;;)
    {
        // 返回值 ret ; ret < 0 表示错误 ; ret == 0 表示超时 ; ret > 0 表示
        int ret=poll(&poll_fd,1,2000);
        if(ret<0)
        {
            perror("poll");
            continue;
        }
        if(ret==0)
        {
            printf("poll timeout!\n");
            continue;
        }
        if(poll_fd.revents==POLLIN)
        {
            char buf[1024];
            int length;
            int res = ioctl(poll_fd.fd,FIONREAD,&length);
            printf("length : [%d]\n",length);
            read(0,buf,sizeof(buf)-1);
            res = ioctl(poll_fd.fd,FIONREAD,&length);
            printf("length : [%d]\n",length);
            printf("sdin:%s",buf);
        }
    }
 }

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

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

(0)
上一篇 2022年7月23日 上午6:46
下一篇 2022年7月23日 上午7:00


相关推荐

  • android点击按钮打开相册,打开相机的代码[通俗易懂]

    android点击按钮打开相册,打开相机的代码[通俗易懂]打开相册首先在onclick方法中:Intentintent=newIntent();intent.setType(&amp;amp;quot;image/*&amp;amp;quot;);//开启Pictures画面Type设定为imageintent.setAction(Intent.ACTION_GET_CONTENT);startActivityForResult(intent,REQUEST_CODE_SEL…

    2026年2月17日
    4
  • 揭秘vista引导机制

    揭秘vista引导机制揭秘vista引导机制   所谓的引导机制就是在操作系统内核运行前的一小段程序。其主要作用是初始化电脑硬件设备,建立内存空间的映射图。从而将系统的软件和硬件设备环境调配到一个适合的状态,以使电脑最终调用系统内核而准备好适合的环境。   那么vista的引导机制是否和以前的windows的版本不同呢?其实vista引导机制是一项全新的技术。以前寄予nt的windows系统采用“ntl

    2022年10月10日
    4
  • C++ decltype用法详解

    C++ decltype用法详解1 什么是 decltypedecl 是 C 11 新增的一个关键字 和 auto 的功能一样 用来在编译时期进行自动类型推导 引入 decltype 是因为 auto 并不适用于所有的自动类型推导场景 在某些特殊情况下 auto 用起来很不方便 甚至压根无法使用 autovarName value decltype exp varName value auto 根据 右边的初始值推导出变量的类型 decltype 根据 exp 表达式推导出变量的类型 跟 右边的 value 没有关系

    2026年3月17日
    2
  • 数据库 关系代数

    数据库 关系代数关系代数是一种抽象的查询语言关系代数的运算对象与运算结果都是关系集合运算把关系看出元组的集合 以元组作为集合中的元素进行集合运算集合运算是典型的二目运算 除笛卡尔积外 交 并 差操作都需满足相容性 具有相同的度 即两个关系的属性名 属性数量必须一致 关系 R 中第 i 个属性和关系 S 中第 i 个属性必须来自同一域 并 Union 运算 R S t t

    2026年3月18日
    2
  • 将文件导入到数据库中_将csv文件导入mysql数据库

    将文件导入到数据库中_将csv文件导入mysql数据库如何将 .sql数据文件导入到SQLsever中?我一开始是准备还原数据库的,结果出现了如下问题。因为它并不是备份文件,所以我们无法进行还原。正确方式:先打开SQLsever2008然后登录,假如出现如下问题则是“对象资源管理器”未开启解决办法,我们打开SQL配置管理器 然后这里是暂停或者是已停止,我们将其打开就行。

    2026年4月15日
    9
  • JS基础篇1:数据类型(8种)

    JS基础篇1:数据类型(8种)最近有很多人说数据类型是 6 种 我怎么记得 JS 的数据类型有 8 种 最近发现好多人对 JS 的基础不太了解 很多数据类型都没有搞清楚 不 BB 我就按我的理解写一波笔记 每次看一波书我就感觉一次比一次多懂一点 来补下知识点 JS 数据类型 基础概念请注意 JS 的数据类型有 8 种 在 ES5 的时候 我们认知的数据类型确实是 6 种 Number String Boolean undefined o

    2026年3月20日
    1

发表回复

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

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