这一章节我们学习网络编程
![](https://img.haomeiwen.com/i2509361/25760e78aed4f4c0.png)
![](https://img.haomeiwen.com/i2509361/89bae4b26a40a6ef.png)
首先来看张图
![](https://img.haomeiwen.com/i2509361/7c2a06c9f6a2447f.png)
![](https://img.haomeiwen.com/i2509361/bee9db22b2d9e474.png)
浏览器连接我们的网站服务器(apache) 为应用层协议 其中浏览器和web服务器之间的交互就是应用层
本章我们以应用层作为背景进行学习(底层协议暂时不学)
应用层协议特征
![](https://img.haomeiwen.com/i2509361/6b5c6c061f048473.png)
接下来我们用代码演示一下
![](https://img.haomeiwen.com/i2509361/46e17bbc1eeb65f9.png)
创建一个socket之间的连接 上图左边为服务端 右边为客户端 两边都要有socket(电话)
socket之间连接之后 要有数据的交互 仅仅是连接 没有交互应答是没什么用的
下面我们先看一下简单的明文字符串时如何交互的
![](https://img.haomeiwen.com/i2509361/9e0448329ae98ffd.png)
接下来创建两个类 里面分别有一个入口函数
目录如下
![](https://img.haomeiwen.com/i2509361/9f90b4fb1af58e44.png)
等一会我们会分别启动这两个入口函数 变成两个程序
MyServer代码
![](https://img.haomeiwen.com/i2509361/37c06cac0ac5360a.png)
MyClient代码
![](https://img.haomeiwen.com/i2509361/a0353acec97e28e5.png)
运行结果
![](https://img.haomeiwen.com/i2509361/94de9a3982113719.png)
先运行MyServer可以看见程序运行时卡住不动了 等待客户端进行连接呢
在运行MyClient
![](https://img.haomeiwen.com/i2509361/71adc2b86047d18c.png)
可以看见Client连接成功后很快运行结束了
在看MyClient的运行结果
![](https://img.haomeiwen.com/i2509361/c94745804fa5a93c.png)
读取到了客户端的数据并且运行也结束了 (因为我们在代码中手动连接完关闭了socket)
接下来我们理解几个问题
![](https://img.haomeiwen.com/i2509361/5de5754415f9b4c4.png)
写一段测试代码
测是下字节类型数组如何和字母 字符串 中文 进行对应
在MyServer中写入
![](https://img.haomeiwen.com/i2509361/26ee403991593b38.png)
运行结果
![](https://img.haomeiwen.com/i2509361/4bee7ba16ea00058.png)
我们在读取一些文档,数据之间进行网络传输等都是通过字节方式进行传输
为什么我们一开始读取字节数写成200呢?
因为传输过程中可能由于网速的原因 读取不了过大的字节数
下面我们理解一下字节的另一个用法
我们将读取字节改为每次读取3个字节MyServer中如下
![](https://img.haomeiwen.com/i2509361/e7ac1e2b7edad404.png)
将MyClient中发送内容改一下
![](https://img.haomeiwen.com/i2509361/ed35eee2a22f633e.png)
注意你好后面的逗号是英文的,只占一个字节 由于默认是utf8格式 一个中文占3个字节 每次读取是每3个字节读取一下的
运行结果
![](https://img.haomeiwen.com/i2509361/33d77788e3c0457b.png)
可以看见逗号后面的内容显示不出来 是因为逗号只占一个字节 后面的文字都是3个字节的 前面的你好也都是三个字节的
所以后面的文字由于前面逗号占了一个字节所以输出有问题
接下来引出一个知识点
上面的代码中,我们使用到了InputStream等 stream中文意思为流
![](https://img.haomeiwen.com/i2509361/b08a1746fe6fe97b.png)
字节流 一般用于传输图像等 字符流一般用于传输纯文本
网友评论