程式碼:
Socket socket = server.accept();
DataInputStream input = new DataInputStream(socket.getInputStream());
List list = new ArrayList();
list.add(socket);
Socket socket1 = (Socket) list.get(0);
DataInputStream input1 = new DataInputStream(socket1.getInputStream());
socket.getInputStream() 每次呼叫都**建立新的 InputStream 實例**(通常是 SocketInputStream)。// 方式一:共用變數
DataInputStream shared = new DataInputStream(socket.getInputStream());
// 後續皆用 shared
// 方式二:第二個引用指向第一個
DataInputStream input1 = input; // 同一物件
read,否則資料會被搶佔導致訊息殘缺。BufferedReader/DataInputStream 並傳遞給處理邏輯,避免重複包裝。DataInputStream.close())會連帶關閉底層 Socket,切勿重複關閉。理解「Socket 通道唯一,流物件可多」有助於正確設計網路讀取架構,避免並發讀取與資源洩漏問題。