2016-07-28 134 views
1

我有2個套接字連接和發送文件。我想在某個時候發送一個信號給第二個socket。我想發送一個字符串「開始」,當接收器套接字獲得它時,我執行一些操作。以下是接收者和發件人的代碼。我究竟做錯了什麼?接收器從來沒有得到「開始」,我相信它被髮送。由於在字節之間發送字符串之間的字符串

發送方:

byte[] buff = new byte[1024 * 50];  
while (isRunning && (readBytes = data.read(buff, 0, buff.length)) != -1) { 
    client.getOutputStream().write(buff, 0, readBytes); 
    if(sendStart){ 
     client.getOutputStream().("start".getBytes("UTF-8"), 0, "start".getBytes("UTF-8").length); 
     sendStart = false; 
    } 
} 

接收側:

DataInputStream in = null; 
    try { 
     in = new DataInputStream(socket.getInputStream()); 
    } catch (IOException e) { 
    } 

byte buffer[] = new byte[1024 * 50]; 
while ((len = in.read(buffer)) != -1) { 
    String received = new String(buffer, "UTF-8"); 
    if(received!=null && received.equals("start")){ 
     Log.d(TAG,"received start"); 
     //do something 
    } 
    receivedFile.write(buffer, 0, len); 
} 
+0

什麼是'in'?有什麼錯誤? – njzk2

+0

@ njzk2 in是DataInputStream(我編輯了這個問題)。沒有錯誤。收到的字符串是亂碼。 –

+0

你開始發送'data'的內容是什麼? – njzk2

回答

0

我覺得問題可能出在這裏:

client.getOutputStream().("start".getBytes("UTF-8"), 0, "start".getBytes("UTF-8").length); 
如果你看

,該write()方法ISN」在這條線上的任何地方。 另外,我想問,你是否有一個特殊的原因你自己處理字符串序列化?你可以使用類似PrintWriterScanner的字符串,或者你可以使用ObjectOutputStreamObjectInputStream作爲任何類型的對象。

相關問題