CS应用程序在双端开发过程中实现服务器端和客户端之间数据的传输
请求request
响应response
网络编程三要素
协议
UDP协议
无连接通信协议,客户端与服务器端并没有真正的建立逻辑连接,不需要验证对方是否在线
缺点:安全性低,数据完整性低
优点:消耗资源少,传输效率高。
TCP/IP协议
建立客户端与服务器端的逻辑连接,需要通过三次握手确定对方是否在线才可传输数据
三次握手
-
客户端向服务器端发送请求
-
服务器端回写响应信息给客户端
-
客户端向服务器发送真正请求
缺点:消耗资源多,耗时长
优点:保证数据安全和准确
IP地址
每一台电脑在互联网络中的唯一标识,确认服务器所在电脑地址
本机IP表示:localhost - 127.0.0.1
端口号
电脑中各个服务的标识,范围0-65535,自定义一般大于1024:8989、9090
案例
服务器端
// 1.设置服务器端口号
ServerSocket ss = new ServerSocket(9090);
// 2.服务器做监听,客户端通过Socket发送请求就会被监听,同时返回Socket
Socket socket = ss.accept();
// 3.监听到请求后,使用Socket对象的网络读入流进行读入数据
InputStream is = socket.getInputStream();
byte[] b = new byte[10];
int l = is.read(b);
String name = new String(b,0,l);
// 服务器端看到这个信息
System.out.println(name);
// 4.继续使用Socket对象 进行数据写出 给到客户端
OutputStream os = socket.getOutputStream();
os.write(("欢迎你"+name).getBytes());
客户端
// 1.创建和服务器传输数据的Socket对象
Socket socket = new Socket("localhost",9090);
// 2.通过Socket获取网络写出流对象
OutputStream os = socket.getOutputStream();
os.write("张三".getBytes());
// 服务器刷新
os.flush();
// 暂时解决服务器读不到-1的情况
socket.shutdownOutput();
// 3.等待服务器响应 预备接收服务器响应信息
InputStream is = socket.getInputStream();
byte[] b = new byte[10];
int l =is.read(b);
System.out.println(new String(b,0,l));