当前位置: 首页 > ops >正文

【Mini 型 http 服务器】—— int get_line(int sock, char *buf, int size);

作用:

逐行读取并返回读取的内容长度,取出读取的内容保存在 buf 数组中

输入:

int sock:需要读取的 sock 套接字

char *buf:用于记录保存读取的内容

int sizebuf 的大小

返回值:

 -1  表示 读取出错

 =0 表示 读到一个空行

 >0 表示 成功读取一行

函数接口实现:

int get_line(int sock, char *buf, int size){int count = 0;char ch = '\0';int len = 0;while( (count<size - 1) && ch!='\n'){len = read(sock, &ch, 1);if(len == 1){if(ch == '\r'){continue;}else if(ch == '\n'){//buf[count] = '\0';break;}//这里处理一般的字符buf[count] = ch;count++;}else if( len == -1 ){//读取出错perror("read failed");count = -1;break;}else {// read 返回0,客户端关闭sock 连接.fprintf(stderr, "client close.\n");count = -1;break;}}if(count >= 0) buf[count] = '\0';return count;
}
http://www.xdnf.cn/news/6973.html

相关文章:

  • spark数据的提取和保存
  • 5、事务和limit补充
  • 【Google机器学习实践指南(线性回归篇)
  • 【赵渝强老师】Memcached的路由算法
  • Linux rpmsg源码分析
  • 常见面试题:Webpack的构建流程简单说一下。
  • 【驱动开发】一 字符设备驱动框架
  • 10.11 LangGraph多角色Agent开发实战:生产级AI系统架构与性能优化全解析
  • 线性表之队列详解
  • C语言之旅【6】--一维数组和二维数组
  • dijkstra算法加训上 之 分层图最短路
  • Leetcode 3553. Minimum Weighted Subgraph With the Required Paths II
  • 【LeetCode 热题100】739:每日温度(详细解析)(Go语言版)
  • vue3大事件项目
  • 浅谈Frida 检测与绕过
  • RabbitMQ 工作模式(上)
  • MySQL事务的一些奇奇怪怪知识
  • linux本地部署ollama+deepseek过程
  • 大模型为什么学新忘旧(大模型为什么会有灾难性遗忘)?
  • EasyExcel动态表头
  • 【Java ee初阶】jvm(2)
  • 【Qt mainwindow 】窗口在启动时自动调整为适应屏幕大小
  • 正则表达式与文本处理的艺术
  • Selenium-Java版(css表达式)
  • go语法大赏
  • btc交易所关键需求区 XBIT反弹与上涨潜力分析​​
  • 深入理解Java中的Minor GC、Major GC和Full GC
  • 组态王|组态王中如何添加西门子1200设备
  • 2.2.4
  • 【数据结构】1-3 算法的时间复杂度