2013-03-14 103 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

相关问题