java TCP/IP Socket编程-----发送和接受数据-----笔记7

来源:互联网 发布:mac版的easysketch 编辑:程序博客网 时间:2024/06/11 15:28

概述:

socket如何传递数据? 带目的看书会事半功倍效果,这个章我们要回答以下几个问题:

1.数据如何进行编排?

2.如何解析数据?

3.如何高效传输数据?

4.如何确定接收方的接受数据是完整的?

解决第一个问题:

1.数据如何进行编排?

数据分为四类八种 byte ,short , int ,long double float char boolean,等,每种数据类型所占的位数不同,当然底层是二进制进行编排,这里不细说,打个比喻理解一下,小时候烧实心砖的时候,记得有大砖的模子,也有小砖的模子,大小模子就是相当于占不同大小的数据类型,简单就这么理解。

2.如何解析数据?

编码端和解码端具有相同字符集(例如通常UTF-8),就是像当我们遇到有歧义的词语会借助新华字典进行解释,因为大家都是把它作为参考。


3.如何高效传输数据?

通过流的嵌套,例如老板安排一个事情给总经理这个年给我赚一个亿,总经理召集副经理开会,说老板发话了,我们这个一年赚一个亿,王副经理你们团队贡献6000万,李副经理你们也贡献4000万(你能力弱一点),接着两个经理又召集下属主管开会分配事务,一直到每个员工知道自己应该做啥。设想如果老板每个人都主动通知?呵呵呵了

DataOutputStream中,DataOutputStream再将这些数据以二进制的形式写入BufferedOutputStream将三次写入的数据缓存起来,然后再由BufferedOutputStream一次性地将这些数据写入套接字的OutputStream,最后由OutputStream将数据发送到网络。在另一个终端,我们创建了相应的组合InputStream,以有效地接收基本数据类型。

4.如何确定接收方的接受数据是完整的?

你的告诉我,你给我传了多大的数据量,就算你不告诉多大,你得告诉我,你什么时候说完?(句号),中文的断句水很深?如果你传过来的数据,不告诉什么时候结束,那就尴尬了,都不明白你在干嘛,俗称定界符,比如说"。"就是定界符,看到句号,我就认为就是一句话。

那么问题来,如果我句中需要。但表示不是结束呢?这时候我们可以把句号替换一个“天王盖地虎”,发送端和接受端都知道的暗号,它会自动还原。


原创粉丝点击