黑马程序员技术交流社区
标题:
[石家庄校区]就业班JavaSE高级部分day11网络编程
[打印本页]
作者:
湿漉漉的文字控
时间:
2018-12-2 15:13
标题:
[石家庄校区]就业班JavaSE高级部分day11网络编程
就业班JavaSE高级部分day11网络编程
网络编程基础
C
/
S结构
:
全称为Client
/
Server结构
,
是指
客户端
和
服务器
结构
常见程序有QQ
,
迅雷等软件
B
/
S结构
:
全称为Browser
/
Server结构
,
是指
浏览器
和
服务器
结构
常见浏览器有IE
,
谷歌
,
火狐等
网络编程
:
在一定的
"协议"
下
,
实现两台计算机的通信的程序
中国人
---
翻译
--->
美国
中国人学英语
---->
美国人
计算机A
------>
计算机B
网络通信协议
网络通信协议
:
通信协议是计算机必须遵守的规则
,
只有遵守这些规则
,
计算机之间才能进行通信
.
协议中对数据的传输格式
,
传输速率
,
传输步骤等做了统一规定
,
通信双方必须同时遵守
,
最终完成数据交换
(
类似于一种语言
,
语法语速做了规定
)
TCP
/
IP协议
:
Transmission
Control
Protocol
/
Internet
Protocol
,
传输控制协议
/
因特网互联协议
.
它定义了计算机如何连入因特网
,
以及数据如何在它们之间传输的标准
.
它的内部包含一系列的用于处理数据通信的协议
,
并采用了4层的分层模型
,
每一层都呼叫它的下一层所提供的协议来完成自己的需求
网络通信协议分类
UDP
:
User
Datagram
Protocol
,
用户数据报协议
特点
:
1.
无连接的不可靠协议
2.
数据按包发送
,
64
K一个包
3.
速度快效率高
,
容易丢包
用于视频直播
,
网络电话
TCP
:
Transmission
Control
Protocol
,
传输控制协议
特点
:
1.
需要建立连接的可靠协议
电话
2.
数据传输无大小限制
3.
速度慢效率低
重发机制
用于文件下载
,
浏览网页
TCP通信的三次握手
:
TCP协议中
,
在发送数据的准备阶段
,
客户端与服务器之间的三次交互
,
以保证连接的可
靠
1.
客户端向服务端发送验证信息
,
等待服务器确认
2.
服务端收到验证信息后
,
回复客户端验证信息
,
同时发送自己的一条验证信息
3.
客户端收到服务端回复的信息
,
确认自己之前发的信息无误
,
并再次向服务器发回服务端的验证信息
网络编程三要素: IP地址
网络编程三要素
:
1.
通信协议
TCP
TCP严格区分为
客户端
(
Client
)
与
服务端
(
Server
)
两端通信时步骤:
1.
服务端程序需要先启动
,
等待客户端的连接
2.
客户端主动连接服务器端
,
连接成功才能通信
.
服务端不可以主动连接客户端
两端之间以
"IO字节流"
进行通信
一个服务端可以和多个客户端同时通信
2.
IP地址
3.
端口号: 计算机中进程的唯一标识
客户端上传案例:
需求
:
编写客户端上传文件代码
实现步骤
:
1.
创建一个本地字节输入流FileInputStream对象
,
构造方法中绑定要读取的数据源
2.
创建一个客户端Socket对象
,
构造方法中绑定服务器的IP地址和端口号
3.
使用Socket中的方法getOutputStream
,
获取网络字节输出流OutputStream对象
4.
使用本地字节输入流FileInputStream对象中的方法read
,
读取本地文件
5.
使用网络字节输出流OutputStream对象中的方法write
,
把读取到的文件上传到服务器
6.
使用Socket中的方法getInputStream
,
获取网络字节输入流InputStream对象
7.
使用网络字节输入流InputStream对象中的方法read读取服务回写的数据
8.
释放资源
(
FileInputStream
,
Socket
)
文件上传案例: 服务器端代码实现:
需求
:
编写文件上传服务器代码
,
将上传的文件保存到当前模块下的upload目录中
实现步骤
:
1.
创建一个服务器ServerSocket对象
,
和系统要指定的端口号
2.
使用ServerSocket对象中的方法accept
,
获取到请求的客户端Socket对象
3.
使用Socket对象中的方法getInputStream
,
获取到网络字节输入流InputStream对象
4.
判断
"模块名\\upload"
文件夹是否存在
,
不存在则创建
5.
创建一个本地字节输出流FileOutputStream对象
,
构造方法中绑定要输出的目的地
6.
使用网络字节输入流InputStream对象中的方法read
,
读取客户端上传的文件
7.
使用本地字节输出流FileOutputStream对象中的方法write
,
把读取到的文件保存到服务器的硬盘上
8.
使用Socket对象中的方法getOutputStream
,
获取到网络字节输出流OutputStream对象
9.
使用网络字节输出流OutputStream对象中的方法write
,
给客户端回写
"上传成功"
10.
释放资源
(
FileOutputStream
,
Socket
,
ServerSocket
)
阻塞问题;
Socket流如何发送结束标记,
java
.
net
.
Socket类
:
TCP客户端
void
shutdownOutput
():
关闭输出流
,
告知服务端数据发送完毕
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2