2013-03-14 101 views
1

這是我的代碼link。在服務啓動一個套接字創建從Android客戶端發送數據到服務器。此服務在銷燬時停止。服務器連接丟失時,如何自行停止並重新啓動客戶端服務?

但我注意到,如果我的客戶端失去與服務器的連接,我無法知道它,更糟的是我無法重新連接到服務器。

我認爲最好的辦法是接收客戶端發送給服務器的命令的回顯,並且如果沒有服務器的回覆理解連接丟失。知道連接丟失後,我需要自行停止服務並重新啓動它。我不知道如何去做。做完這些之後,我需要重新參與活動。

另一種方式是客戶端套接字應該爲每個要發送的數據打開和關閉。這樣它會自動重新連接到服務器。我也不知道該怎麼做。

任何幫助表示讚賞

回答

2

我修改了我的代碼以實現問題中提出的第二種解決方案。我不是在startservice()上創建套接字,而是現在創建它並在客戶端每次發送數據時關閉它。這樣我就不必停止我的連接丟失服務。服務器端我修改爲無限期地監聽端口,除非客戶端指示跳出循環並斷開連接。

public void sendMessage(String message){ 
     //making message variable global to the SocketSevice class 
     this.message=message; 

     //connecting to class that performs socket connection 
     Runnable connect = new connectSocket(); 
     new Thread(connect).start(); 

    } 
0

當你要重新啓動您的服務只是發送廣播消息到你的活動之一。 接收到您的廣播消息後,請編寫一段代碼以啓動您的廣播接收機定義的活動的服務。 (殺掉服務類或廣播接收器類中的服務)

+0

好的。這是一個好主意,但問題是我有多個活動,並且我不知道何時連接丟失了哪個活動正在運行。那麼我將不得不爲所有活動實施廣播接收機? – Giz 2013-03-14 10:26:01

+0

沒有..當一個連接丟失只是發送廣播..你可能會使用單獨的廣播接收機類。從該廣播接收機類再次開始您的服務.. – 2013-03-15 05:59:27

相關問題