我想創建一個連接到服務器的套接字。用戶可以手動輸入插座的IP地址和IP端口。與錯誤的IP導致Android套接字連接導致凍結
當地址和端口有效時沒有任何錯誤,但是當它們不這樣做時,它會導致我的整個應用程序凍結。
這是代碼:
public void connect() {
try {
String txHostIP = settings.getString("txHostIP", "");
int txHostport = Integer.parseInt(settings.getString("txHostPort", ""));
//Where it all goes wrong. The program just hangs here for eternity
socket = new Socket(txHostIP, txHostport);
writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
} catch (IOException e) {
showMessage(context, "Something went wrong");
}
}
我要的是一個消息彈出時,可以進行無連接,但程序不會引發異常,如果一個IP地址或端口不正確。
我該如何解決這個問題?任何幫助是極大的讚賞!
編輯:
我已經添加了一些System.out的打印顯示一個程序如何掛起。我還添加了5秒的套接字連接超時。該程序甚至不會達到該代碼塊。
public void connect() {
try {
String txHostIP = settings.getString("txHostIP", "");
int txHostport = Integer.parseInt(settings.getString("txHostPort", ""));
System.out.println("1");
socket = new Socket(txHostIP, txHostport);
System.out.println("2");
socket.connect(socket.getLocalSocketAddress(), 5000);
System.out.println("3");
writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
System.out.println("4");
} catch (IOException e) {
showMessage(context, "Something went wrong");
}
}
它只是打印1,然後永遠掛起。
你有沒有嘗試捕捉'UnknownHostException'? – OrhanC1
嘗試將'IOException'更改爲'Exception'。 –
已經做了Piotr。仍然沒有拋出異常:( –