客户端和服务端通信方法
(Socket)传输层: TCP UDP
(J2EE、Spring+)应用层:Http、Https 、(ftp)
一次请求一次响应
java-网络编程类
服务端-ServerSocket(java.net)
//创建服务端
ServerSocket serverSocket = new ServerSocket(端口号);
while(true){
//获取客户端连接
Socket 连接的客户端对象 = serverSocket.accept();
}
客户端-Socket
Socket sc = new Socket("服务端所在的ip地址","服务端端口号");
客户端和服务端之间的通信
C端和服务端通信是基于客户端与服务端建立的IO通道进行通信的,(一般情况下不要关闭IO流)
//服务端要获取客户端发送的消息(代码写在服务端处)
InputStream inputStream = socket.getInputStream();
//客户端要获取服务端的消息(代码写在客户端处)
InputStream inputStream = socket.getInputStream();
//服务端要发送消息给客户端(代码写在服务端处)
OutputStream outputStream = socket.getOutputStream();
//客户端要发送消息给服务端(代码写在客户端处)
OutputStream outputStream = socket.getOutputStream();
服务端和客户端创建方法
new Thread(()->{
//1. 创建服务端
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(8080);
} catch (IOException e) {
System.err.println("创建服务异常!");
}
System.out.println("服务端创建成功!。。。等待连接");
Socket accept = null;// 阻塞
try {
accept = serverSocket.accept();
} catch (IOException e) {
System.err.println("获取客户端连接异常!");
}
System.out.println("有客户端连接!");
System.out.println(accept);
},"server").start();
Thread.sleep(1000);
//客户端线程
new Thread(()->{
try {
Socket sc = new Socket("127.0.0.1",8080);
} catch (IOException e) {
System.err.println("创建客户端异常!");
}
},"C1").start();
聊天程序常用方法
sc.sendUrgentData(1);//如果异常代表客户端不在线
sc.setKeepAlive(true);// 保持连接活跃
sc.setSoTimeout(999999999);// 设置客户端断线时间