案例 1
- 编写一个服务器端和一个客户端;
- 服务器端在 9999 端口监听;
- 客户端连接到服务端,发送“hello, server”,然后退出;
- 服务器端接收到客户端发送的信息,输出到控制台,并退出;
Server 端
import java.io.*;import java.net.ServerSocket;import java.net.Socket;public class Server { public static void main(String[] args) throws Exception { // 监听 9999 端口 int port = 9999; ServerSocket serverSocket = new ServerSocket(port); // 建立连接 Socket socket = serverSocket.accept(); // 使用包装流包装一个字符流对象出来 InputStream inputStream = socket.getInputStream(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); // 读取一行 String line = null; line = bufferedReader.readLine(); System.out.println(line); // 使用包装流包装一个字符流对象出来 OutputStream outputStream = socket.getOutputStream(); BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream)); // 写入一行内容 bufferedWriter.write("hello, client - 字符流"); bufferedWriter.newLine(); bufferedWriter.flush(); // 关闭流和 socket bufferedReader.close(); bufferedWriter.close(); socket.close(); serverSocket.close(); }}
Client 端
import java.io.*;import java.net.InetAddress;import java.net.Socket;public class Client { public static void main(String[] args) throws Exception { int port = 9999; Socket socket = new Socket(InetAddress.getLocalHost(), port); OutputStream outputStream = socket.getOutputStream(); BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream)); Thread.sleep(3000); bufferedWriter.write("hello, server - 字符流示例"); bufferedWriter.newLine();//插入一个换行符,表示写入内容结束,注意,此时要求对方使用 readLine() !!! bufferedWriter.flush();// 如果使用的字符流,需要手动刷新,否则数据不会写入数据通道 InputStream inputStream = socket.getInputStream(); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); // 按行读取 String line = null; line = bufferedReader.readLine(); System.out.println(line); bufferedWriter.close(); bufferedReader.close(); socket.close(); }}