需求

客户端向服务器写字符串(键盘录入),服务器(多线程)将字符串反转后写回,客户端再次读取到是反转后的字符串

实现

  1. package cn.giteasy.test;
  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.io.PrintStream;
  6. import java.net.ServerSocket;
  7. import java.net.Socket;
  8. /**
  9. * 服务端
  10. *
  11. * 客户端向服务器写字符串(键盘录入),服务器(多线程)将字符串反转后写回,客户端再次读取到是反转后的字符串
  12. * 客户端:cn/giteasy/test/Test01Client.java
  13. */
  14. public class Test01Server {
  15. public static void main(String[] args) throws IOException {
  16. ServerSocket server = new ServerSocket(8888);
  17. System.out.println("服务端启动...");
  18. while(true) {
  19. //接受客户端的请求
  20. final Socket socket = server.accept();
  21. System.out.println("收到一个请求...");
  22. //开启一条线程
  23. new Thread() {
  24. @Override
  25. public void run() {
  26. try {
  27. BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  28. PrintStream ps = new PrintStream(socket.getOutputStream());
  29. //将客户端写过来的数据读取出来
  30. String line = br.readLine();
  31. //链式编程反转这符串
  32. line = new StringBuilder(line).reverse().toString();
  33. //反转后写回去
  34. ps.println(line);
  35. socket.close();
  36. } catch (IOException e) {
  37. e.printStackTrace();
  38. }
  39. }
  40. }.start();
  41. }
  42. }
  43. }
  1. package cn.giteasy.test;
  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.io.PrintStream;
  6. import java.net.Socket;
  7. import java.net.UnknownHostException;
  8. import java.util.Scanner;
  9. /**
  10. * 客户端:
  11. *
  12. *
  13. * 客户端向服务器写字符串(键盘录入),服务器(多线程)将字符串反转后写回,客户端再次读取到是反转后的字符串
  14. *
  15. * 服务端:cn/giteasy/test/Test02Server.java
  16. */
  17. public class Test01Client {
  18. public static void main(String[] args) throws UnknownHostException, IOException {
  19. Scanner sc = new Scanner(System.in);
  20. //创建客户端,指定ip地址和端口号
  21. Socket socket = new Socket("localhost", 8888);
  22. //获取输出流
  23. BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); //获取输入流
  24. //获取输出流
  25. PrintStream ps = new PrintStream(socket.getOutputStream());
  26. System.out.println("请录入一个字符串:");
  27. //将字符串写到服务器去
  28. ps.println(sc.nextLine());
  29. //将反转后的结果读出来
  30. System.out.println(br.readLine());
  31. socket.close();
  32. }
  33. }