主要内容
- 软件架构CS/BS
- 网络通信三要素
- TCP通信
- Socket套接字
- ServerSocket
1 网络编程入门
1.1软件结构
- C/S结构:指客户端和服务器结构。
- B/S结构:指浏览器和服务器结构
1.2网络通信协议
TCP/IP四层模型
- 应用层
- 传输层
- 网络层
- 数据链路层/物理层
1.3协议分类
TCP面向连接
三次握手
第一次握手,客户端向服务器端发出连接请求,等待服务器确认。
第二次握手,服务器端向客户端回送一个响应,通知客户端收到了连接请求。
第三次握手,客户端再次向服务器端发送确认信息,确认连接UDP面向无连接
不需要建立连接,直接发送,每个数据包大小在64k以内。传输速度快,容易丢失数据。
1.4网络编程三要素
- 协议
- IP地址
设备在网络中的唯一标识
查看本机ip:ipconfig
检查网络是否连通:ping 220.181.57.216
本机ip:127.0.0.1、localhost- 端口
程序在设备中的唯一标识
范围:两个字节的整数,0-65535(1024以下属于系统)
2 TCP通信程序
通信步奏:
1.ServerSocket对象:服务端Server先启动,等待客户端Client连接
2.Socket对象:客户端主动连接服务器端,连接成功草能通信
2.1 Socket类
客户端套接字
构造方法
public Socket(String host,int port): 创建套接字对象连接到指定ip的指定端口号。 如果host=null,则相当于指定地址为回送地址127.0.0.1 Socket client = new Socket("127.0.0.1", 6666);
成员方法
public InputStream getInputStream() : 返回输入流 如果此Scoket具有相关联的通道,则关闭生成的InputStream也将关闭相关的Socket。 public OutputStream getOutputStream() :返回输出流。 如果此Scoket具有相关联的通道,则关闭生成的OutputStream也关闭相关的Socket。 public void close() :关闭此套接字。 关闭此socket也将关闭相关的InputStream和OutputStream 。 public void shutdownOutput() : 禁用此套接字的输出流。 任何先前写出的数据将被发送,随后终止输出流
2.2 ServerSocket类
服务器套接字
构造方法
public ServerSocket(int port): 创建ServerSocket绑定端口号port。 ServerSocket server = new ServerSocket(6666);
成员方法
public Socket accept(); 侦听并接受连接,返回Socket对象用于和客户端通信, 该方法一直堵塞知道建立连接
2.3 简单的TCP网络程序
1.【服务端】启动,创建ServerSocket对象,等待连接
2.【客户端】启动,创建Socket对象,请求连接
3.【服务端】接受连接,调用accept方法,返回一个Socket对象
4.【客户端】Socket对象获取OutputStream,向服务器写出数据
5.【服务端】Socket对象获取InputStream,读取客户端的数据
6.【服务端】Socket对象获取OutputStream,向客户端回写数据
7.【客户端】Socket对象获取InputStream,解析回写的数据
8【客户端】释放资源,断开连接