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

c/c++ 网络编程 read,write函数深入理解

read,write函数深入理解

1,服务端的write函数,可以指定发送数据的长度(第三个参数length)

write(connfd, &buff[i], length);

2,客户端的read函数,可以指定收取数据的长度(第三个参数length)

read(sockfd, recvline, length)

问题来了,假设要发送的数据的总长度为20,服务端调用write函数时,是放在循环里调用,每次发送的长度设置为1,所以全部发完,需要循环20次,也就是调用了20次的write函数。然后,客户端的read函数调用如下面所示,计数器cnt的值为多少???

  int cnt = 0;
  while ( (n = read(sockfd, recvline, MAXLINE)) > 0) {
    cnt += 1;
    recvline[n] = 0;    /* null terminate */
    if (fputs(recvline, stdout) == EOF)
      err_sys("fputs error");
  }
  printf("count:%d\n", cnt);

根据运行服务端的程序的机器和运行客户端程序的机器不同,而不同。

  • 如果客户程序和服务器程序运行在一个主机上的话,计数器通常是1。
  • 如果客户运行在Solaris上,而服务器运行在BSD上,那么计数器通常是2。第一个字符被分成1组,剩余的19个字符分为1组,所以计数器是2。
  • 如果客户运行在BSD上,服务器运行在Solaris上,那么计数器是20。每个字符被分成1组,所以计数器是20。

想强调的是:针对不同的环境,我们的程序必须作好为字节流读入这些数据的准备,直到遇上数据流的末尾

c/c++ 学习互助QQ群:877684253

1414315-20181021231230340-609433331.jpg

本人微信:xiaoshitou5854

转载于:https://www.cnblogs.com/xiaoshiwang/p/10536026.html

相关文章:

  • DevExpress WinForms使用教程:SVG图库和Image Picker
  • 4.标准信号与槽
  • 爬取碧蓝航线wiki
  • LeetCode 第104题 二叉树的最大深度
  • 学习进度二
  • Maven 属性
  • ASP.NET Core 基于JWT的认证(二)
  • javascript面向对象编程,带你认识封装、继承和多态
  • 【SQL优化】MySQL官网中可优化的层次结构
  • 1.2变量
  • Kubernetes 笔记 06 豌豆荚之旅(一)
  • 2019.3.19
  • JPA将查询结果转换为DTO对象
  • CTF-rootme 题解之PHP filters
  • 微信小程序之文本输出
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • 07.Android之多媒体问题
  • ESLint简单操作
  • java多线程
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • Linux CTF 逆向入门
  • October CMS - 快速入门 9 Images And Galleries
  • Shadow DOM 内部构造及如何构建独立组件
  • 分享几个不错的工具
  • 面试总结JavaScript篇
  • 漂亮刷新控件-iOS
  • 如何用vue打造一个移动端音乐播放器
  • 深度学习中的信息论知识详解
  • 网页视频流m3u8/ts视频下载
  • 微信小程序开发问题汇总
  • 我的面试准备过程--容器(更新中)
  • ​力扣解法汇总946-验证栈序列
  • #{}和${}的区别?
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • (Java)【深基9.例1】选举学生会
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (三分钟)速览传统边缘检测算子
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .net framework profiles /.net framework 配置
  • .NET Framework 服务实现监控可观测性最佳实践
  • .NET 服务 ServiceController
  • .NET 设计一套高性能的弱事件机制
  • .NET 中使用 Mutex 进行跨越进程边界的同步
  • .NetCore部署微服务(二)
  • .NET中两种OCR方式对比
  • @EnableWebMvc介绍和使用详细demo
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • [ vulhub漏洞复现篇 ] Celery <4.0 Redis未授权访问+Pickle反序列化利用
  • []Telit UC864E 拨号上网