设为首页 加入收藏

TOP

c\c++ 网络编程 read,write函数深入理解
2019-03-15 12:07:59 】 浏览:40
Tags:网络编程 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

本人微信:xiaoshitou5854


编程开发网
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C++_对象数组与对象指针 下一篇『ACM C++』 PTA 天梯赛练习集L1 ..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

array(4) { ["type"]=> int(8) ["message"]=> string(24) "Undefined variable: jobs" ["file"]=> string(32) "/mnt/wp/cppentry/do/bencandy.php" ["line"]=> int(217) }