*网络编程
·在一定的协议下,实现两台计算机的通信的程序
·软件结构
·C/S 客户端服务器
·B/S 浏览器服务器
*网络通信协议
·TCP/IP
·定义了计算机如何接入因特网以及数据如何在他们之间传输的标准
·应用层:HTTP...
·传输层:TCP UDP
·网络层:IP...
·数据链路层+物理层
·UDP
·用户数据报协议(User Datagram Protocol)
·无连接协议
·特点:
·耗费资源小,效率高
·偶尔会丢失数据包,对结果影响不大
·无法保证数据的完整性
·TCP
·传输控制协议(Transmission Control Protocol)
·面向连接的通信协议
·无差错数据传输
·客户端向服务端发出连接请求实现三次握手
·第一次
·客户端发送连接请求,等待服务器确认
·第二次
·服务器回一个响应,通知客户端收到连接请求
·第三次
·客户端再次向服务器发送确认信息,确认连接
*网络编程三要素
·协议
·IP地址
·IPv4
·4字节32位二进制数
·IPv6
·16字节128位二进制数
·端口号
·逻辑地址
·使用网络软件,当软件一打开,操作系统就会为网络软件分配一个随机的端口号,也可以指定端口号
·端口号由两个直接组成,取值范围0-65535
·1024前的端口号,已经被系统分配
·网络软件端口号不能重复
·常用端口
·网络端口 80
·数据口 MySQL:3306 oracle:1521
·Tomcat 8080
*TCP通信程序
·客户端与服务器连接步骤
·服务器预先启动,等待客户端连接
·客户端成功连接服务器,连接成功才能通信,客户端不主动连接
·TCP通信的步骤
·服务器端启动
不会主动请求
·客户端请求服务器端
建立逻辑连接,包含了一个字节流IO对象
·通过4个IO流对象进行连接
·客户端类: Socket类
1.客户端给服务器端发送数据
OutputStream
4.客户端读取服务器发送的数据
InputStream
·服务器端: ServerSocket类
2.读取客户端发送的数据
InputStream
3.客户端给服务器发数据
OutputStream
·注意:
·多个客户端同时和服务器进行交互时,服务器必须明确和哪个客户端进行的交互
·在服务器端有一个accept()方法
·多个客户端和服务器进行交互,需要多个IO流对象
·服务器没有IO流,使用客户端的发送流进行回写数据
*Socket
·客户端常用构造方法
·Socket(String host, int port)
·host:服务器IP地址
·port:端口号
·OutputStream()返回输出流
·InputStream()返回输入流
·close()关闭套接字
·实现步骤
·创建一个客户端对象Socket,构造方法绑定服务器的IP地址和端口号
·使用SOCket对象中的方法,getOutputSteam()获取网络字节输出流OutputSteam对象
·使用网络字节输出流OutputStream对象中的方法write,给服务器发送数据
·使用Socket对象中的方法getInputStream()获取网络字节输入流InputStream对象
·使用网络直接输入流InputStream对象的方法read,读取服务器回写的数据流
·释放资源(Socket)
·注意:
·客户端和服务器端进行交互,必须使用Socket中提供的网络流,不能使用自己创建的流对象
·当创建客户端对象Socket时,就回去请求服务器和服务器经过3吃握手建立连接通路
·如果服务器没有启动就会抛出异常
·如果服务器已经启动就可以进行交互
·服务器常用构造方法
·ServerSocket(int port)创建绑定到特定端口的服务器套接字
·accept()监听并接受到此套字的连接
·实现步骤
·创建服务器ServerSocket对象的系统指定的端口号
·使用SercerScoket对象中的方法accept,获取到请求的客户端Scoket
·使用Socke对象中的构造方法getInputStream()获取网络字节输入流InputStream
·使用网络字节输入流InputStream对象中的方法read,读取客户端发送的数据
·使用Socket对象中的getOutputStream()获取网络字节输出流OutputStream
·使用网络字节输出流OutputStream对象中的方法write给客户端回写数据
·释放资源(Socket,ServerSocket)