从文件传输到通信协议

       人啊,是不应该说谎的,不过貌似我已经说了很多谎了保密,其实说一个谎很简单,但是你会为了圆这一个谎而去说更多的谎,从此陷入说谎的万劫不复之地。

 

       以上内容完全只是个人感想,欢迎大家批评。下面进入正题,先上图:

 从文件传输到通信协议_第1张图片

 

       目前的界面我暂时做成了这个样子,但是文件传输功能还是没有添加进来,因为错失一节课,导致我到现在对于文件传输这个玩意儿还是一知半解,不过今天比昨天好。

 

       我的题目是从文件传输到通信协议,有人可能会说,不是应该先有了通信协议,在才能实现文件传输么。没错!是这样,但从学习的角度来说,我们首先是要向实现文件传输这个功能,然后必须去了解通信协议。

 

       先说说要做到文件传输(是在之前的群聊客户端里面加入传文件的功能),我们要首先解决什么问题:区分要传输的内容到底是文件还是普通的文本(即文字消息)和文件怎么传输。之前我们已经解决掉了文本传输:以\r\n来分割字符串,以实现消息的完整性(即为文本消息的传输协议)。

 

       对于文件传输,我们就需要一个关于文件传输的通信协议:

              首先,我们知道每一种消息(文本和文件)都是由两部分组成的:消息头和消息体。每一种消息头的结构格式都是固定的,而消息体的格式则因为消息类型不同而不同。

              消息头的结构如下图:

从文件传输到通信协议_第2张图片

              对于消息体,文本消息的消息体部分很简单,就只是聊天的内容。而文件的消息体则是由组成文件的字节和文件名表示。

 

       在我们发送消息时,必须按照顺序和格式数据一次写入输出流对象中。服务器端在读取的时候,首先要先读取消息的总长度,在读取消息的类型,判断此消息是文本还是文件,最后根据类型对消息做出相应的措施。

 

       通过以上过程我们可以知道所谓的通信协议,可以说是通信双方都必须遵守的通信规则,只能遵守这个规定,通信双方甚至多方才能正常通信。

 

       从文件传输来了解的协议当然只能算是冰山一角,对于通信协议的更多内容还得我们自己阅读更多的文献去了解。

 

       进步并不会在一瞬间。

 

 

 

你可能感兴趣的:(文件传输)