Socket = IP + 端口,是網絡通信的端點。QQ、MSN 等即時通訊底層均基於 Socket。本文演示最簡單的單向文本傳輸。
package com.socket.demo;
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("----------------服務端運行,開始監聽請求----------------");
Socket socket = serverSocket.accept(); // 阻塞等待連接
InputStream is = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String info;
while ((info = br.readLine()) != null) {
System.out.println("我是服務器端,客戶端請求為:" + info);
}
// 關閉資源
socket.shutdownInput();
br.close(); is.close(); socket.close(); serverSocket.close();
} catch (Exception e) { e.printStackTrace(); }
}
}
package com.socket.demo;
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) {
try {
Socket socket = new Socket("127.0.0.1", 8888);
OutputStream os = socket.getOutputStream();
PrintWriter pw = new PrintWriter(os);
pw.write("服務器端你好,我是客戶端。");
pw.flush();
pw.close(); os.close(); socket.close();
} catch (Exception e) { e.printStackTrace(); }
}
}
ServerSocket.accept() 阻塞直到有連接。BufferedReader 按行讀取。PrintWriter.flush() 確保數據發送。