2016-07-28 15 views
1

Ich habe 2 Sockets verbinden und eine Datei senden. Ich möchte irgendwann ein Signal an die zweite Buchse senden. Ich dachte an das Senden einer Zeichenfolge "Start" und wenn der Empfänger-Socket es bekommt, führe ich etwas aus. Unten ist der Code für Empfänger und Absender. Was mache ich falsch? Der Empfänger bekommt nie den "Start" und ich bin sicher, dass er gesendet wird.Eine Zeichenfolge zwischen den Sockets zwischen den Bytes senden

Dank

Senderseite:

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; 
    } 
} 

Empfängerseite:

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

was ist 'in'? irgendein Fehler? – njzk2

+0

@ njzk2 in ist der DataInputStream (Ich habe die Frage bearbeitet). Kein Fehler. Die empfangene Zeichenfolge ist Kauderwelsch. –

+0

Sie beginnen mit dem Senden des Inhalts von 'Daten' wofür ist das? – njzk2

Antwort

0

Ich denke, der Fehler in hier sein könnte:

client.getOutputStream().("start".getBytes("UTF-8"), 0, "start".getBytes("UTF-8").length); 

, wenn Sie schauen, die write() Methode isn‘ t irgendwo in dieser Zeile. auch, ich wollte fragen, gibt es einen bestimmten Grund, warum Sie die String-Serialisierung selbst behandeln? Sie könnten etwas wie PrintWriter und Scanner für Strings verwenden, oder Sie könnten ObjectOutputStream und ObjectInputStream für jede Art von Objekt verwenden.