字节流通信协议

今日学习了字节流通信协议,知道了它的基本原理:任何的信息在网线中都是以字节的形式传递的,要解析这些字节,把它们恢复原貌展现在用户面前,于是就有了通信协议,而字节流通信协议则是其中的一种形式。

 

字节流通信协议的形式:

 

总长度

 

信息类型

 

人名的长度

 

人名内容

 

信息的长度

int

byte

byte

int

int

 

 

 

 

 

总长度

信息类型

文件名长度

文件名

文件内容

int

byte

byte

int

int



 

 

    还可以把这些协议定得很长很长,协议的形式是自己定的,就有点像中文解释运动。比如在说明一件事的时候,你要先说那是一件什么事,那件事怎么样,然后再说明有些什么其他的特点,当然这些特点需要一一细说,然后剩下的就只有总而言之了。

    换成了在网线里面,中文解释运动的语言全部换成byte了,而用一连串的byte值,也不知道怎么说明那些信息有什么特点才好,起码一堆的byte值你用肉眼是分辨不出消息有什么特点的,只好从信息的长度下手了(大概在网线里只剩下这么一个特点了吧!= =+),首先用一个int描述人家(指发送的信息)有多长,然后用一个byte值描述人家是什么类型的人物,然后如果消息是要发送的信息的话,就先把发送的人名的长度用一个byte存起来,然后用一堆的byte来把发送的人们存储起来,这里我是这么想的:就感觉是把一个词先存到前面了,后面一堆话来解释前面的词是什么,有什么含义。然后把另一个词存入,然后一大堆的话来解释它……如此往复地进行下去,到最后剩下的东西总而言之一下就OK了。协议的最后不是把消息的内容全部都用一个巨型byte存储了吗?而在这样巨型存储之前也没有把消息的长度先用一个byte存储,因为总特点-分特点*n=寥寥无几的特点的总而言之。就比如说上面的发送信息的那个例子:总长度=4(总长度所占的int的位数)+1(信息类型所占byte的一个位)+1(人名的长度所占的一个byte+NameLength(人名的长度)+MessageLength(发送的信息长度),就是这样了。

 

    特别注意:发送文件的时候,一定要先把文件读入字节流中(吾辈怎么能忘了这么关键的一步呢!!!),要不然就会出现我这种bug状况,文件发不过去。总长度一定不要搞得乱七八糟,不然很会发生紊乱的,客户端的协议要和服务器的一致。这样才能把文件发送过去。**说:黑客就是要高精度地解析字节。好吧!注定我成不了黑客,那是些外星人,大概他们的语言可以表现成为byte。一黑客说:10 1 1 2 6,另一黑客答:12 1 1 1 9”……= =+(老大,二进制存储啊!你别装作不知道计算机只认识01啊!= =+

 

    代码就不共享了,现在还存在bug,能够发送信息过去,但是仅限于我在程序中预定好的。虽然我在生活中比较强势,但是我不希望代码跟我一样强势啊!每次只发送xyz我会很郁闷的……继续修改代码去,我要提前适应程序猿的生活。

 

<!--EndFragment-->

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值