如何正确处理tcp输入流 - Java / Android

时间:2016-06-13 11:45:16

标签: java android tcp inputstream

我正在创建一个需要与服务器建立永久TCP连接的Android应用程序。

我创建了一个服务,用于建立连接并侦听输入流上的传入字节(服务在后台运行)。

public  class TCPServiceConnection extends Service{
        //variables......
        //...............
        public void onCreate() { 
               establishTCPConnection(): 
        }

前4个传入字节表示完整消息的消息长度。

从Inputstream读取完整的Message到一个单独的缓冲区后,我想在另一个分析Message的Thread中调用另一个Service / Asynctask。 (该服务应继续侦听进一步传入的消息)。

        public handleTCPInput() {
               while(tcp_socket.isConnected()) {
               byte[] buffer = readCompletemessagefromTCPInputstream; 
               calltoAnotherThreadToanalyzeReceivedMessage(buffer); 
               }
               //handle exceptions.......
        }

Android / Java中是否存在已经处理对我的分离byte []缓冲区的多重访问的Messagequeue系统?

1 个答案:

答案 0 :(得分:0)

为了实现这一点,我建议你启动一个处理程序线程,它将继续从输入流中读取。

一旦读取传入消息,它就会使用处理程序将其传递给主线程。

例如。 handler.sendMessage()

现在,由于此处理不是繁重的操作,您可以决定主/ UI线程来处理此信息,或者您可以启动异步任务来执行此操作。