5.1 回声客户端的完美实现
1. 回声服务器端没有问题,只有客户端有问题。
回声客户端传输的是字符串,而且是通过调用write函数一次性发送的,之后还调用一次read函数,期待着接收自己传输的字符串。
2. 回声客户端问题解决方法
解决:因为可以提前确定接收数据的大小,若之前传输了20字节长的字符串,则在接收时循环调用read函数读取20个字节即可。
3. 如果问题不在于回声客户端:定义应用层协议
由于回声客户端已知需要接收数据的长度,所以问题容易解决,但是如果无法提前预知需要接收数据长度,该如何?此时需要应用层协议的定义。
服务器端/客户端实现过程中逐步定义的这些规则几何就是应用层协议。可以看出,应用层协议并不是高深莫测的存在,只不过是为特定程序的实现而制定的规则。
4. 实现计算器服务器端/客户端示例(设计应用层协议)
操作如下所示:
编写程序前,设计如下应用层协议:
- 客户端连接到服