2017-07-17 33 views
0

TCP経由のソケット接続を使用してサーバーからデータのバイトを読み取る必要があります。データは、255(0xFF)の値を持つ1つ以上のオクテットで区切られたバイトストリーム形式です。特定の区切り文字で区切られたTCPソケットからのデータを読み取る方法

私はBufferedInputSreamを使用してデータを読み取ります。私のコードの一部は以下の通りです:私は、私は1つのデータパケットを受信し、同じ処理を開始していることを知っているように、

String messageString = ""; 
DataInputStream in = new DataInputStream(new BufferedInputStream(socket.getInputStream())); 
byte[] bytes = new byte[16 * 1024]; 
System.out.println("Receiving Bytes"); 
    while(true) 
    { 
    bytesRead = in.read(bytes); 
    messageString += new String(bytes,0,bytesRead); 
    if (<SOME CONDITION TO KNOW THAT DELIMITER IS RECEIVED>) 
     { 
     System.out.println("Message Received: " + messageString); 
     //Proceed to work with the message 
     messageString = ""; 
     } 
    } 

私はIF条件が必要です。 私は受け取るメッセージの長さを知っていません。着信メッセージの長さに関する情報を持っていません。

このタイプのバイトデータを読んでください。 本当にありがとうございます。

答えて

0

あなたの区切り文字が255である場合、あなたはちょうどあなたがちょうどその値を読み取ったデータをチェックすることができます

bytesRead = in.read(bytes); 
int index= bytes.indexOf(255); 
if (index<0) 
{ 
    messageString += new String(bytes,0,bytesRead); 
} 
else //<SOME CONDITION TO KNOW THAT DELIMITER IS RECEIVED>) 
{ 
    messageString += new String(bytes,0,index); 
    System.out.println("Message Received: " + messageString); 
    //Proceed to work with the message 
    messageString = ""; 
} 
関連する問題