我正在做應用程序,它將一些數據從手機發送到PC。我使用套接字來做到這一點。當服務器在線時它可以工作,但是當我嘗試連接錯誤的IP /端口或服務器沒有運行時,應用程序凍結,我無法做任何事情。這是因爲手機上的客戶端試圖連接到服務器。當它嘗試連接到服務器時使用套接字凍結的應用程序
我有主類中,我提出:
Thread cThread = new Thread(new TCPClient(ip, port, message, context));
cThread.start();
有新的TcpClient方面,因爲我需要做吐司發送信息時或出現錯誤時。在的TcpClient類有:
public void run(){
try {
InetAddress serverAddr = InetAddress.getByName(s_ip);
Log.d("TCP", "C: Connecting...");
Socket socket = new Socket(serverAddr, s_port);
當服務器在線不言而喻:
Log.d("TCP", "C: Sending: '" + s_msg + "'");
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())),true);
out.println(s_msg);
Log.d("TCP", "C: Sent.");
Log.d("TCP", "C: Done.");
但是當服務器脫機或者我把錯誤的IP /端口我的應用程序凍結。我暫時無法做任何事情。
有什麼解決方案強制停止嘗試連接服務器一段時間後?例如,5秒鐘後應用程序將趕上並給我錯誤。
我試圖用AsyncTask來做到這一點,即使客戶端試圖連接到服務器,但應用程序仍在工作,但在接受不到我的時間後出現Toast,所以我想要一個解決方案,當客戶端例如5秒鐘無法與服務器連接。