Android 端口处的java接收连接

Android 端口处的java接收连接,android,Android,我在messenger应用程序中使用一个端口来接收文件和消息。我想问我如何区分文件和消息?我已经研究并发现我将不得不做一个protoco,我试过了,但我似乎做不到。有没有办法做到这一点 现在我收到的连接如下: public class ReceiveConnection extends Thread { Socket clientSocket = null; public ReceiveConnection(Socket socket) {

我在messenger应用程序中使用一个端口来接收文件和消息。我想问我如何区分文件和消息?我已经研究并发现我将不得不做一个protoco,我试过了,但我似乎做不到。有没有办法做到这一点

现在我收到的连接如下:

public class ReceiveConnection extends Thread {

        Socket clientSocket = null;

        public ReceiveConnection(Socket socket) 
        {
            this.clientSocket = socket;

            SocketOperator.this.sockets.put(socket.getInetAddress(), socket);
        }

        @Override
        public void run() {
             try {

BufferedReader in = new BufferedReader(newInputStreamReader(clientSocket.getInputStream()));



                        while ((inputLine = in.readLine()) != null) {                



                             if (inputLine.contains("TEXT") == true)
                            {

                                Log.i("SocketOP","text");
                                appManager.messageReceived(inputLine);  
                        }


                        }
                         if (inputLine.contains("TEXT") == false)
                        {
                     InputStream is=clientSocket.getInputStream();

                 while(is!= null){
                            Log.i("SocketOP","filee");

appManager.fileReceived(is);
                     }


                        }

我已将字符串文本与我的文本消息关联起来,因此它将通过。放置ELSE语句不起作用。如何在文件中添加通知程序,以便知道何时收到文件?

您应该创建包含以下数据的消息头:

以作为消息分隔符的2-4字节长的唯一字节序列开始。这应该是一个独特的非文本序列,不是很常见,例如不是CRLF或其他控制序列

包含消息类型字节,以便您知道这是文本消息还是文件

包含消息的长度,这有助于提取消息


请努力格式化您的代码。那种形式真的很难理解。谢谢你的回复。不过,我不明白你的第二点。我也不知道如何把它取回来。对不起,我是初学者,你能详细说明一下吗。也许是个例子?非常感谢。或者如果你能给我一个链接来解释一下:谢谢。在接收端,你需要知道数据的类型。你有文本和文件。你需要区分它们,因为你对待它们的方式不同。这正是我要问的。我该怎么做?我绞尽脑汁,但徒劳无功。在发送数据之前,请按上述方式发送标题。它帮助您解码接收端的数据。