当前位置:   article > 正文

《网络编程》-第5章 – 基于TCP的服务器端/客户端_tcp/ip网络编程第5章为什么能直接接收整数

tcp/ip网络编程第5章为什么能直接接收整数

1、对 –第4章 echo_client.c 程序做了修改

​ 确保在 client上write的数据被完整的read。解决方法是设置一个延时,书里面是写一个 while(),在里面读完。

在这里插入图片描述

2、实例

该程序中,服务器端从客户端获得多个数字和运算符信息。服务器端收到数字后对其进行加减乘运算,然后把结果传回客户端。例如,向服务器端传递3、5、9的同时请求加法运算,则客户端收到3+5+9的运算结果;若请求做乘法运算,则客户端收到3×5x9的运算结果。而如果向服务器端传递4、3、2的同时要求做减法,则客户端将收到4-3-2的运算结果,即第一个参数成为被减数。

【思考】

强制类型转换没整明白。

read、write第二个参数只能是1字节的指针型?如果用int的话就要强制转换(char *)

3、TCP原理

SYN:请求建立连接

ACK:应答

FIN:断开连接

1- 三次握手

在这里插入图片描述

2- 数据传输

在这里插入图片描述

3- 四次挥手

在这里插入图片描述

4、习题

2) TCP是可靠的数据传输协议,但在通过网络通信的过程可能丢失数据。请通过ACK和SEQ说明TCP通过何种机制保证丢失数据的可靠传输?

SEQ顺序标识符是给信息编号。ACK是用于回复带有编号的信息。也就是说,每次传输信息时,都同时发送SEQ标识,而受到信息的主机应以SEQ信息为基础回复发送信息的主机。通过这种机制,传输数据的主机就可以确认数据是否被正确接收。在传输失败时,可以重新传送。

3) TCP套接字中调用write()和read()函数时数据如何移动?结合I/O缓冲进行说明?

当write函数被调用时,数据就会向端口的输出缓冲区移动。然后经过网络传输传输到对方主机套接字的输入缓冲。这样,输入缓冲中存储的数据通过read函数的响应来读取

4) 对方主机的输入缓冲剩余50字节空间时,若本方主机通过write函数请求传输70字节,问TCP如何处理这种情况?

对方主机会把输入缓冲中可存储的数据大小传送给要传输数据的数据(本方)。因此,在剩余空间为50字节的情况,即使要求传送70字节的数据,也不能传输50字节以上,剩余的部分保存在传输方的输出缓冲中,等待对方主机的输入缓冲出现空间。而且,这种交换缓冲多余空间信息的协议被称为滑动窗口协议。

代码入口

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/158746
推荐阅读
相关标签
  

闽ICP备14008679号