Android - 在服务器和客户端之间发送数据

时间:2016-08-04 12:14:05

标签: android sockets service serversocket android-networking

我正在做一个允许人们在他们之间共享文件的应用。现在我正在尝试分享文本,但很快我会将其更改为文件。但是我在创建Socket连接时遇到了一些麻烦(2个设备已经通过热点连接:其中一个是热点;另一个连接到它)。

我打算做一个普通的java套接字连接,但后来我在这里读到,如果手机进入休眠状态,套接字将关闭/超时。你们为这个问题推荐的解决方案是使用Intent Services。

我创建了两个IntentServices,一个ClientCommService和一个ServerCommService。我在onHandleIntent()方法中使用它,我应该创建套接字并开始监听/等待任何传入的消息(创建流对象并启动套接字)。我的问题是我也想发送消息,我不知道应该把逻辑放在哪里发送消息this.out.writeObject()。 这很重要,因为我想创建一个双向通信,可以由任何成员(服务器或客户端)启动。

问题2:我在stackoverflow上看到的一些方法,只为服务器创建了一个IntentService。为什么呢?

1 个答案:

答案 0 :(得分:0)

如果您想要在手机进入睡眠状态后继续保持服务,则需要创建Service而不是IntentService

此外,您需要将您的服务保持为STICKY服务。

@Override
public int onStartCommand(Intent intent, int flags, int startId) {

     return START_STICKY;
}

请记住,此服务正在主线程上运行,因此您需要处理您的代码,不要中断UI线程。

您可以将客户端/服务器逻辑放在onStartCommand方法中。