案例 1

  • 编写一个服务器端和一个客户端;
  • 服务器端在 9999 端口监听;
  • 客户端连接到服务端,发送“hello, server”,然后退出;
  • 服务器端接收到客户端发送的信息,输出到控制台,并退出;

Server 端

  1. import java.io.*;
  2. import java.net.ServerSocket;
  3. import java.net.Socket;
  4. public class Server {
  5. public static void main(String[] args) throws Exception {
  6. // 监听 9999 端口
  7. int port = 9999;
  8. ServerSocket serverSocket = new ServerSocket(port);
  9. // 建立连接
  10. Socket socket = serverSocket.accept();
  11. // 使用包装流包装一个字符流对象出来
  12. InputStream inputStream = socket.getInputStream();
  13. BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
  14. // 读取一行
  15. String line = null;
  16. line = bufferedReader.readLine();
  17. System.out.println(line);
  18. // 使用包装流包装一个字符流对象出来
  19. OutputStream outputStream = socket.getOutputStream();
  20. BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
  21. // 写入一行内容
  22. bufferedWriter.write("hello, client - 字符流");
  23. bufferedWriter.newLine();
  24. bufferedWriter.flush();
  25. // 关闭流和 socket
  26. bufferedReader.close();
  27. bufferedWriter.close();
  28. socket.close();
  29. serverSocket.close();
  30. }
  31. }

Client 端

  1. import java.io.*;
  2. import java.net.InetAddress;
  3. import java.net.Socket;
  4. public class Client {
  5. public static void main(String[] args) throws Exception {
  6. int port = 9999;
  7. Socket socket = new Socket(InetAddress.getLocalHost(), port);
  8. OutputStream outputStream = socket.getOutputStream();
  9. BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
  10. Thread.sleep(3000);
  11. bufferedWriter.write("hello, server - 字符流示例");
  12. bufferedWriter.newLine();//插入一个换行符,表示写入内容结束,注意,此时要求对方使用 readLine() !!!
  13. bufferedWriter.flush();// 如果使用的字符流,需要手动刷新,否则数据不会写入数据通道
  14. InputStream inputStream = socket.getInputStream();
  15. BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
  16. // 按行读取
  17. String line = null;
  18. line = bufferedReader.readLine();
  19. System.out.println(line);
  20. bufferedWriter.close();
  21. bufferedReader.close();
  22. socket.close();
  23. }
  24. }