此 TCP 客戶端可連接單線程或多線程服務器(端口 8089),實現基本的文本聊天功能。採用 Socket 長連接,使用獨立定時任務輪詢接收服務器消息,主線程負責發送。
Socket socket = new Socket(serverIp, 8089); BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
使用 Timer 每 200ms 執行一次 TimerTask,調用 in.readLine() 讀取服務器推送的消息並打印。
class JieShou extends TimerTask {
public void run() {
try {
String msg = in.readLine();
if (msg != null) System.out.println(msg);
} catch (Exception e) { /* 忽略 */ }
}
}
while (true) {
Scanner scanner = new Scanner(System.in);
out.println(userName + ": " + scanner.next());
}
readLine(),要求消息以換行符結尾。finally 塊中調用 socket.close()。