创建Socket对象

  1. Socket socket = new Socket("localhost", 9688);
  2. // 输入io
  3. BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

localhost 服务端地址, 9688 服务端端口号

写数据给socket对象,传递给服务端

  1. readLine = reader.readLine();
  2. writer.println(readLine);
  3. writer.flush();

reader读取控制台输入,将读取到的数据

监听服务端传过来的数据

  1. Thread thread = new Thread(new Runnable() {
  2. @Override
  3. public void run() {
  4. try {
  5. System.out.println(socketReader.readLine());
  6. if (socketReader.readLine().equals("over")) {
  7. over[0] = 1;
  8. }
  9. } catch (IOException e) {
  10. e.printStackTrace();
  11. }
  12. }
  13. });
  14. thread.start();

完整的客户端代码

  1. package io.bio;
  2. import java.io.BufferedReader;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.io.PrintWriter;
  6. import java.net.Socket;
  7. /**
  8. * 客户端代码
  9. *
  10. * @author linguo
  11. *
  12. */
  13. public class ClientSocketDemo {
  14. public static void main(String[] args) throws IOException {
  15. try {
  16. // 创建Socket对象 localhost 服务端地址, 9688 服务端端口号
  17. Socket socket = new Socket("localhost", 9688);
  18. // 输入io
  19. BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  20. // 客户端写io
  21. PrintWriter writer = new PrintWriter(socket.getOutputStream());
  22. // 客户端读io
  23. BufferedReader socketReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  24. int[] over = new int[1];
  25. // 创建线程读取服务端传来的数据
  26. Thread thread = new Thread(new Runnable() {
  27. @Override
  28. public void run() {
  29. try {
  30. System.out.println(socketReader.readLine());
  31. if (socketReader.readLine().equals("over")) {
  32. over[0] = 1;
  33. }
  34. } catch (IOException e) {
  35. e.printStackTrace();
  36. }
  37. }
  38. });
  39. thread.start();
  40. // 客户端持续读取控制台并写给服务器
  41. String readLine = null;
  42. while (true) {
  43. readLine = reader.readLine();
  44. writer.println(readLine);
  45. writer.flush();
  46. // 收到服务端的over需要断开连接
  47. if (over[0] == 1) {
  48. break;
  49. }
  50. }
  51. writer.close();
  52. socketReader.close();
  53. reader.close();
  54. socket.close();
  55. } catch (IOException e) {
  56. System.out.println("can't listen to:" + e);
  57. }
  58. }
  59. }