1

This is the link to my code. On service start a socket a created that sends data to the server from android client. This service is stopped on destroy.

But I noticed, if my client loses connection with the server I have no way of knowing it and worse I cannot reconnect to the server.

I assume the best way would be to receive an echo of the command sent by the client to the server and if there is no reply from server understand that the connection is lost. After knowing that the connection is lost I need to self stop the service and restart it. I have no idea how to go about it. After doing this I need to rebind to the activity.

The other way is the client socket should be opened and closed for every data being sent. This way it automatically reconnects to the server. I do not know how to do this too.

Any help is appreciated

4

2 に答える 2

2

質問で提案された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();

    }
于 2013-03-14T14:13:39.250 に答える
0

サービスを再開したい場合は、アクティビティの 1 つにブロードキャスト メッセージを送信するだけです。ブロードキャスト メッセージを受信したら、ブロードキャスト レシーバーが定義されているアクティビティでサービスを開始するコードを記述します。(サービスクラス内またはブロードキャストレシーバークラスでサービスを強制終了します)

于 2013-03-14T09:39:21.283 に答える