当服务器连接丢失时,如何自行停止和重新启动客户端的服务?
Posted
技术标签:
【中文标题】当服务器连接丢失时,如何自行停止和重新启动客户端的服务?【英文标题】:When server connection is lost, how to stop and restart a service of the client on its own? 【发布时间】:2013-03-14 09:12:37 【问题描述】:这是我的代码的link。在服务上启动一个创建的套接字,它将数据从 android 客户端发送到服务器。此服务在销毁时停止。
但我注意到,如果我的客户端失去与服务器的连接,我无法知道它,更糟糕的是我无法重新连接到服务器。
我认为最好的方法是接收客户端向服务器发送的命令的回显,如果没有来自服务器的回复,请理解连接丢失。在知道连接丢失后,我需要自行停止服务并重新启动它。我不知道该怎么做。完成此操作后,我需要重新绑定到活动。
另一种方式是客户端套接字应该为每个正在发送的数据打开和关闭。这样它会自动重新连接到服务器。我也不知道该怎么做。
感谢任何帮助
【问题讨论】:
【参考方案1】:我已修改我的代码以实施问题中建议的第二种解决方案。我现在没有在 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();
【讨论】:
【参考方案2】:当您想重新启动服务时,只需向您的一项活动发送一条广播消息。 在接收到您的广播消息时,编写一段代码来启动您的广播接收器所定义的活动的服务。 (杀死服务类内部或广播接收器类上的服务)
【讨论】:
好的。这是个好主意,但问题是我有多个活动,我不知道连接何时丢失,哪个活动正在运行。所以我必须为所有活动实现广播接收器? No.. 当连接丢失时发送一个广播.. 你可以使用单独的广播接收器类。从那个广播接收器类你再次开始你的服务..以上是关于当服务器连接丢失时,如何自行停止和重新启动客户端的服务?的主要内容,如果未能解决你的问题,请参考以下文章