1、Client(客戶端代碼)
package cn.qi.Client; import java.io.*; import java.net.Socket; public class Client { Socket clientSocket; Client() {} public void write() throws IOException { // 建立連接到服務器端的socket clientSocket = new Socket("127.0.0.1",5000); // 客戶端向服務器端發送消息,通過socket建立管道 OutputStream os = clientSocket.getOutputStream(); // 通過socket獲取IO管道,純IO操作 PrintWriter pw = new PrintWriter(os); pw.write("hello"); pw.flush(); // 流的關閉 pw.close(); // 關閉socket連接 clientSocket.close(); } public void read() throws IOException { // 建立連接到服務器端的socket clientSocket = new Socket("127.0.0.1",5000); // socket實現純IO InputStream is = clientSocket.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String st = br.readLine(); br.close(); System.out.println(st); // 關閉socket連接 clientSocket.close(); } public void writeAndRead() throws IOException { // 建立連接到服務器端的socket clientSocket = new Socket("127.0.0.1",5000); // 客戶端向服務器端發送消息,通過socket建立管道 OutputStream os = clientSocket.getOutputStream(); // BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os)); // bw.write("hello"); // bw.write("\n"); // bw.flush(); PrintWriter pw = new PrintWriter(os); pw.write("hello"); // 當服務器端用readline讀取消息時,客戶端發送消息時要附帶換行符,否則服務器端就無法結束讀取 pw.write("\n"); pw.flush(); // 客戶端與服務器端雙向通信時不能關閉IO流,否則默認認為想要關閉socket InputStream is = clientSocket.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String st = br.readLine(); System.out.println(st); clientSocket.close(); } }
2、Server(服務器端代碼)
package cn.qi.Server; import java.io.*; import java.net.ServerSocket; import java.net.Socket; public class Server { ServerSocket serverSocket; Server() {} public void sent() throws IOException { // 建立severSocket,監聽對應端口 serverSocket = new ServerSocket(5000); while(true) { // server監聽端口,監聽成功,生成socket Socket socket= serverSocket.accept(); // 服務器端向客戶端發送消息,通過socket建立管道 OutputStream os = socket.getOutputStream(); // 通過socket獲取IO管道,純IO操作 PrintWriter pw = new PrintWriter(os); pw.write("hello"); pw.flush(); // 流的關閉 pw.close(); // 本次請求的socket的關閉 socket.close(); } } public void getInfo() throws IOException { // 建立severSocket,監聽對應端口 serverSocket = new ServerSocket(5000); while(true) { // server監聽端口,監聽成功,生成socket Socket socket= serverSocket.accept(); // socket實現純IO InputStream is = socket.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String st = br.readLine(); br.close(); System.out.println(st); // 本次請求的socket的關閉 socket.close(); } } public void readAndWrite() throws IOException { // 建立severSocket,監聽對應端口 serverSocket = new ServerSocket(5000); while(true) { // server監聽端口,監聽成功,生成socket Socket socket = serverSocket.accept(); // socket實現純IO InputStream is = socket.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String st = br.readLine(); System.out.println(st); // 服務器端向客戶端發送消息,通過socket建立管道 OutputStream os = socket.getOutputStream(); PrintWriter pw = new PrintWriter(os); pw.write("yes hello"); pw.flush(); pw.close(); // 本次請求的socket的關閉 socket.close(); } } }