Java Server + Android Client 同一局域網/內網,代碼邏輯無誤,但 Client 無法連接 Server。嘗試 127.0.0.1(回環地址)亦失敗。
https://: ?adb shell ping 是否通?ServerSocket 必須綁定 0.0.0.0 或具體 LAN IP,**不能只綁 127.0.0.1**(僅本機可訪問)。AndroidManifest.xml 聲明 <uses-permission android:name="android.permission.INTERNET" />。NetworkOnMainThreadException。192.168.1.100),而非 127.0.0.1、localhost、公網 IP(除非做了端口映射)。// Server 端測試(Java)
new Thread(() -> {
try (ServerSocket ss = new ServerSocket(8888)) {
System.out.println("Server listening on 0.0.0.0:8888");
while (true) new Thread(() -> handle(ss.accept())).start();
} catch (IOException e) { e.printStackTrace(); }
}).start();
// Client 端測試(Android/Kotlin 協程)
lifecycleScope.launch(Dispatchers.IO) {
try {
Socket socket = Socket("192.168.1.100", 8888) // 換成實際 Server LAN IP
// 通信邏輯...
} catch (e: Exception) { Log.e("Socket", "Connect failed", e) }
}
90% 連接失敗源於「網絡不通」「綁定 127.0.0.1」「主線程聯網」「防火牆攔截」,逐項核對通常 10 分鐘內定位解決。