Android - 在服务器和客户端之间发送数据
Android - Sending data between server and client
我正在开发一款允许人们在他们之间共享文件的应用程序。现在我只想共享文本,但很快我会将其更改为文件。但是我在创建套接字连接时遇到了一些麻烦(这两个设备已经通过热点连接:其中一个是热点;另一个连接到它)。
我打算做一个正常的 java 套接字连接,但后来我在这里读到如果 phone 进入睡眠状态,套接字将 close/timeout。你们针对该问题推荐的解决方案是使用 Intent Services。
我创建了两个 IntentService,一个 ClientCommService 和一个 ServerCommService。我假设在 onHandleIntent() 方法内部,我应该为任何传入消息创建套接字并启动 listening/waiting(创建流对象并启动套接字)。我的问题是我也想发送消息,但我不知道应该将发送消息的逻辑放在哪里 this.out.writeObject()。
这很重要,因为我想创建一个双向通信,可以由任何成员(服务器或客户端)启动。
问题 2:我在 Whosebug 上看到的一些方法只为服务器创建了一个 IntentService。为什么?
如果您想在 phone 进入休眠状态后继续使用您的服务,那么您需要创建 Service
而不是 IntentService
。
您还需要将您的服务保持为 STICKY 服务。
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}
请记住,此服务在主线程上 运行,因此您需要注意您的代码不会中断 UI 线程。
您可以将 client/server 逻辑放在 onStartCommand
方法中。
我正在开发一款允许人们在他们之间共享文件的应用程序。现在我只想共享文本,但很快我会将其更改为文件。但是我在创建套接字连接时遇到了一些麻烦(这两个设备已经通过热点连接:其中一个是热点;另一个连接到它)。
我打算做一个正常的 java 套接字连接,但后来我在这里读到如果 phone 进入睡眠状态,套接字将 close/timeout。你们针对该问题推荐的解决方案是使用 Intent Services。
我创建了两个 IntentService,一个 ClientCommService 和一个 ServerCommService。我假设在 onHandleIntent() 方法内部,我应该为任何传入消息创建套接字并启动 listening/waiting(创建流对象并启动套接字)。我的问题是我也想发送消息,但我不知道应该将发送消息的逻辑放在哪里 this.out.writeObject()。 这很重要,因为我想创建一个双向通信,可以由任何成员(服务器或客户端)启动。
问题 2:我在 Whosebug 上看到的一些方法只为服务器创建了一个 IntentService。为什么?
如果您想在 phone 进入休眠状态后继续使用您的服务,那么您需要创建 Service
而不是 IntentService
。
您还需要将您的服务保持为 STICKY 服务。
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}
请记住,此服务在主线程上 运行,因此您需要注意您的代码不会中断 UI 线程。
您可以将 client/server 逻辑放在 onStartCommand
方法中。