我们之前已经实现了把信息发送其他计算机,清楚地认识到了这种信息传递方式(通过数据包传递)的组织形式,那么,你有没有想过,如果有一次,这个数据包因为意外,没能到达,会发生什么呢?
为了方便表述,我们可以称发送信息的一方为客户端,接受信息的一方为服务器(实际上不是这样,无论服务器还是客户端都在不停地收发信息,读者意会即可),客户端发送了一条信息,但是这条信息服务器没有收到,就会发生错误(数据包越大丢包率越高,大家可以自己测试一下丢包率),如何解决这种问题呢?udp协议给出的解决方案是服务器每收到一条信息,就回复一次客户端,已收到,客户端如果长时间没有收到服务端回答这条信息,就视这条信息为已经丢了,重新发送它。
那么,就让我们来实现它吧,首先,我们需要一个信息类。
还有一件值得一提的事情是tcp开始运作时会有一个三次握手的阶段,第一次,客户端发送一条请求给服务器(这条信息不包含任何有效信息),第二次,服务器回复客户端一条信息,表示自己已经收到这条信息(这条信息同样不包含任何有效信息),第三次,客户端回复服务器一条信息,表示自己已经收到上条信息(这条信息可以包含有效信息)
你想到怎么实现这三次握手了吗?快开始敲代码吧!