A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

就业班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. 数据按包发送, 64K一个包
        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(): 关闭输出流, 告知服务端数据发送完毕


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马