2016-09-11 1 views
0

Im folgenden Code der Server einfach den Text aus dem Client erhalten und es auf Konsole aus ..Server wird immer nur Null-Wert java

I. aber wenn Client einen Text der Server nur Wert erhält schicken als null bedeutet auf seine Konsole zeigt "null"

II. wie kann ich kontinuierliche Datenübertragung verwenden bedeutet als Client-Typ ein Zeichen der Server bei gleichzeitig und auch bei Konsolen Druck ..

Hier ist Server empfängt:

try { 
     System.out.println("Server Has Started........ \nWaiting for client........"); 
     serverSocket = new ServerSocket(SERVERPORT); 
     client = serverSocket.accept(); 
     try { 
      while (!stop && running) { 
       BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream())); 
       String usercmnd = in.readLine(); 
       System.out.println(usercmnd+"\n"); 
       if (usercmnd != null) {     
       }break; 
      } 
     } catch (Exception e) { 
      System.out.println("Error"); 
      e.printStackTrace(); 
     } 
    } catch (Exception e) { 
     System.out.println("Error"); 
     e.printStackTrace(); 
    } 

hier ist client:

send.setOnClickListener(
      new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        try{ 
         cs = new Socket(SERVERIP,PORT); 
         try{ 
          out = new DataOutputStream(cs.getOutputStream()); 
          out.writeBytes(text.getText().toString()); 
          Toast.makeText(KeyboardActivity.this, "Success", Toast.LENGTH_LONG).show(); 
         } catch (Exception ea) { 
          Toast.makeText(KeyboardActivity.this, ea.getMessage(), Toast.LENGTH_LONG).show(); 
         } 
        } 
        catch (IOException e) { 
         Toast.makeText(KeyboardActivity.this, e.getMessage(), Toast.LENGTH_LONG).show(); 
        } 

       } 
+0

Können Sie eine https://stackoverflow.com/help/mcve ohne alle GUI-Zeug? – Robert

Antwort

1

Bitte versuchen Sie dies auf der Serverseite:

String inputLine;   
    StringBuilder response = new StringBuilder(); 

    while ((inputLine = in.readLine()) != null) { 
     response.append(inputLine); 
    } 
    String fullresponse = response.toString(); 

ODER

können Sie einfach diese Seite auf dem Client tun:

out.writeUTF(text.getText().toString());//to write client data to server 

und dies auf der Serverseite:

String clientData= in.readUTF();//at server side to read data 

eher als

out.writeBytes(text.getText().toString()); 
+0

'writeUTF()' funktioniert! Aber wie kann ich das kontinuierliche Datenstreaming mit dem obigen Code machen? –

+0

Verwenden Sie den ersten Teil meiner Antwort –

+0

Ich habe versucht, aber es funktioniert genauso wie normal.wie kann ich damit umgehen, als Benutzer geben Sie ein beliebiges Zeichen zur gleichen Zeit gleichen Zeichen auch auf die Konsole –

Verwandte Themen