java在端口接收连接

时间:2011-09-18 08:19:53

标签: android

我使用单个端口在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);
                     }


                        }

我已将字符串“TEXT”与我的短信相连,以便它通过。放一个ELSE语句是行不通的。如何在文件中添加通知程序以便我知道文件何时被接收?

1 个答案:

答案 0 :(得分:0)

您应该创建一个包含以下数据的邮件标题:

  1. 以唯一字节序列(2-4个字节长)开始,充当消息分隔符。这应该是一个不常见的唯一非文本序列(例如,不是CRLF或其他控制序列)。

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

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