我使用单个端口在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语句是行不通的。如何在文件中添加通知程序以便我知道文件何时被接收?
答案 0 :(得分:0)
您应该创建一个包含以下数据的邮件标题:
以唯一字节序列(2-4个字节长)开始,充当消息分隔符。这应该是一个不常见的唯一非文本序列(例如,不是CRLF或其他控制序列)。
包含消息类型字节,以便您知道这是文本消息还是文件。
包含消息的长度,这有助于提取消息。