demo1(单线程简单通讯)
服务端
public class Server {public static void main(String[] args) throws Exception {//5.创建ServerSocket、Socket、OutputStream、InputStream以及端口号并初始化ServerSocket serverSocket = null;boolean flag = true;Socket socket = null;OutputStream out = null;InputStream in = null;try {//6.开启服务器并接收客户端发送的数据serverSocket = new ServerSocket(8000);//创建服务器套接字System.out.println("服务器开启,等待连接...");socket = serverSocket.accept();//获得连接//接收客户端发送的内容in = socket.getInputStream();//7.使用输出流对象将信息返回给客户端out = socket.getOutputStream();System.out.println(socket.getInetAddress().getHostAddress() + "---连接成功");out.write("连接成功".getBytes());out.flush();while (flag) {byte[] b = new byte[1024];int len = in.read(b);System.out.println("client:" + new String(b, 0, len));//控制台输入Scanner src = new Scanner(System.in);String str = src.nextLine();out.write(str.getBytes());out.flush();if (str.equals("bye")) {flag = false;}}} catch (IOException e) {e.printStackTrace();} finally {//8.关闭流对象、ServerSocket对象以及Socket对象in.close();out.close();serverSocket.close();socket.close();}}
}
客户端
public class Client {public static void main(String[] args) throws Exception {//1.定义 Socket 对象、OutputStream 对象和一个 InputStream 对象并完成初始化Socket socket = null;OutputStream out = null;InputStream in = null;boolean flag = true;//定义服务器端的 IP 地址和端口号String serverIP = "127.0.0.1";//服务器端 IP 地址int port = 8000;//服务器端端口号try {//2.建立与服务器端的连接并将数据发送到服务器端socket = new Socket(serverIP, port);//建立连接out = socket.getOutputStream();//发送数据while (flag) {//3.从输入流中读出服务器的反馈信息并输出到控制台byte[] b = new byte[1024];in = socket.getInputStream();int len = in.read(b);String response = new String(b, 0, len);System.out.println("server:" + response);if ("bye".equals(response)) {flag = false;break;}//控制台输入Scanner src = new Scanner(System.in);String str = src.nextLine();out.write(str.getBytes());out.flush();}} catch (Exception e) {e.printStackTrace();} finally {//4.关闭流及 Socket 对象in.close();out.close();socket.close();}}
}