赞
踩
客户端连接到服务器端后以1字节整数形式传递待算数字个数
客户端向服务器端传递的每个整数型数据占用4字节
传递整数型数据后接着传递运算符。运算符占用1字节
选择字符+、-、*之一传递
服务器端以4字节整数型向客户端传回运算结果
客户端得到运算结果后终止与服务器端的连接
因为以4字节整数型为单位进行数据传递,所以op_client.c中:
#define RLT_SIZE 4 //字节大小数
read(sock, &result, RLT_SIZE);//以一个4字节整数的数据为返回结果
调用write函数时,数据将转移到输出缓冲,在适当的时间传向对方的输入缓存。对方调用read函数从输入缓存中读取数据。
I/O特性:
I/O缓冲在每个TCP套接字中单独存在
I/O缓冲在创建套接字时自动生成
即使关闭套接字也会继续传递输出缓存中遗留的数据
关闭套接字将丢失输入缓存中的数据
当客户端输入缓冲为50字节,服务器传输了100字节时:
TCP控制数据流,因为TCP中有活动窗口(Window)协议,会确定客户端已经接收到多少和能继续接收多少,以此调控数据传输的速率,不必担心TCP因为数据缓冲溢出导致丢失数据。
建议看计算机网络(第8版)谢希仁 第五章 中的TCP部分
SYN(synchronous建立联机)
ACK(acknowledgement 确认)
FIN(finish结束)
SEQ(sequence number 序列号)
TCP套接字从创建到消失经过3步:
与对方套接字建立连接
与对方套接字进行数据交换
断开与对方套接字的连接
这实际通信过程中经过3次对话过程也叫"Three-way handshaking(三次握手)"。
ACK号 -> SEQ号 + 传递的字节数 + 1
重传:TCP套接字启动计时器等待ACK应答,相应计时器发生超时则重传。
套接字A向套接字B传递断开连接的消息,套接字B发出确认收到的消息,然后向套接字A传递可断开连接的消息,套接字A同样发出确认消息。
A:FIN(A:我断开)
B:ACK(B:收到)
B:FIN(B:我断开)
A:ACK(A:收到)
双方各发送一次FIN消息后断开连接。此过程经4个阶段,又称四次握手(Four-way handshaking)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。