网络编程
服务器和客户端实现单次通信
服务器的 接受和发送
// 搭建服务器
ServerSocket server = new ServerSocket(55555);
System.out.println("服务器启动完成");
// 等待客户端连接服务器
Socket socket = server.accept();
System.out.println("一个客户端连接了");
// --------- 客户端连接服务器,服务器给客户端发送消息
//获取一个输出流
OutputStream os = socket.getOutputStream();
/// 把输出流转成打印流,得到一个打印流
PrintStream ps = new PrintStream(os);
ps.println("欢迎你连接服务器");
// ---------- 服务器接受到客户端的回复
InputStream inputStream = socket.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String text = bufferedReader.readLine();
System.out.println("服务器接收到客户端的回复:"+text);
客户端的访问和接收
// 连接服务器 服务器ip , 端口
Socket socket = new Socket("localhost",55555);
// ------客户端接收服务器的信息
// 获取一个输入流 is,通过BufferedReader 一行行读取
InputStream is = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String text = br.readLine();
System.out.println("客户端接到消息:"+text);
// -------客户端向服务器发送信息
// 访问服务器的 输出流
OutputStream os = socket.getOutputStream();
PrintStream ps = new PrintStream(os);
ps.println("服务器你好");
}
进阶版的,可以实现多个客户端访问的例子
服务器可以接受多个 客户端的访问。增加了线程,避免因某个客户端的卡顿影响其他客户端的访问。
package 服务器;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
/**
* @program: 服务器和客户端
* @description:
* @author: 白嫖怪AE
* @create: 2021-11-24 15:38
**/
public class Server {
public static void main(String[] args) throws IOException {
// 搭建服务器
ServerSocket server = new ServerSocket(55555);
System.out.println("服务器启动完成");
// 等待客户端连接服务器
/**
* while 循环可以实现,多个客户端的访问。
* 但是,一但有 一个客户端卡主,那么剩下的客户端都会等待
* */
while(true) {
Socket socket = server.accept();
// 添加线程,实现 避免访问等待
new Thread(){
@Override
public void run() {
try {
OutputStream outputStream = socket.getOutputStream();
PrintStream printStream = new PrintStream(outputStream);
printStream.println("欢迎你连接服务器");
// 服务器获得 客户端的消息
InputStream inputStream = socket.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String text = bufferedReader.readLine();
System.out.println("服务器收到客户端的回复"+text);
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
System.out.println("一个客户端连接了");
}
}
}
客户端的发送和接受
package 客户端;
import java.io.*;
import java.net.Socket;
/**
* @program: 服务器和客户端
* @description:
* @author: 白嫖怪AE
* @create: 2021-11-24 15:38
**/
public class clent {
public static void main(String[] args) throws IOException {
// 连接服务器 服务器ip , 端口
Socket socket = new Socket("localhost",55555);
// 获取一个输入流 is,通过BufferedReader 一行行读取
InputStream is = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String text = br.readLine();
System.out.println("客户端接到消息:"+text);
// 访问服务器的 输出流
OutputStream os = socket.getOutputStream();
PrintStream ps = new PrintStream(os);
ps.println("服务器你好");
}
}