2017-08-16 13 views
0

ein Client-Socket-Programm in Java Socket-Programmierung mit (in Windows-VM) erzeugt ganze Zahl von 1 bis 10 pro Code untensenden Datenstrom von Client-Programm-Server-Programm (in VM läuft) (auf Host-O)

public class ClientSocket { 

    public static void main(String[] args) 

    { 

try{ 
    InetAddress inetAddress = InetAddress.getLocalHost(); 
    String clientIP = inetAddress.getHostAddress(); 
    System.out.println("Client IP address " + clientIP); 

    Integer dataSendingPort ; 
    dataSendingPort = 6999 ; 

    Socket socket = new Socket("192.168.0.32",dataSendingPort); 
    String WelcomeMessage = " hello server from " + clientIP ; 


BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); 

if(socket.isConnected()){ 
    System.out.println("connection was successful"); 
} 
else{ 
    System.out.println("Error- connection was not successful"); 
} 


for (int x= 0 ; x< 10 ; x++){ 
    bufferedWriter.write(x); 
    bufferedWriter.flush(); 
} 

    bufferedWriter.close(); 
} 
catch (IOException e){ 
    System.out.println(e); 
}// catch 
     finally{ 

    System.out.println("closing connection"); 

} 

    } // main 

} // class 

Mein Server-Socket-Programm wird als Host-Computer unter Mac OS ausgeführt wird, dessen Code wird unter

public class MyServer { 

     public static void main(String[] args) throws Exception { 


      try { 
// get input data by connecting to the socket 


       InetAddress inetAddress = InetAddress.getLocalHost(); 
       String ServerIP = inetAddress.getHostAddress(); 

       System.out.println("\n server IP address = " + ServerIP); 

       Integer ListeningPort ; 
       ListeningPort = 6999 ; 

       ServerSocket serverSocket = new ServerSocket(ListeningPort); 

       System.out.println("server is receiving data on port # "+ ListeningPort +"\n"); 

       // waiting for connection form client 

       Socket socket = serverSocket.accept(); 


       if(socket.isConnected()){ 

        System.out.println("Connection was successful"); 
       } 
       else { 
        System.out.println("connection was not successful"); 
       } 



       BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream())); 

    Integer s = 0 ; 

     while ((s = input.read()) >= 0){ 

      System.out.println(input.read()); 
     } 
      } //try 

      catch (IOException e) 
      { 
       System.out.println(e); 

      } // catch 


     } //main 
    } //socket class 

gezeigt Das Problem ist, dass die Ausgabe ich erhalte -1, wenn ich while-Schleife verwenden und ersten Wert, dh erhalten 0 ohne eine Schleife zu verwenden.

Allerdings konnte ich einen einzelnen Wert vom Client zum Server senden, aber wie kann ich Strom von Werten aus dem Client senden und auf Server Seite drucken.

Vorschläge sind willkommen

Antwort

1
  • -1 Ende des Stromes bedeutet.
  • Durch Schließen des Eingabe- oder Ausgabestroms eines Materials wird der Sockel geschlossen.
  • socket.isConnected() kann zu dem Zeitpunkt, an dem Sie es testen, möglicherweise nicht falsch sein.
  • input.ready() ist kein Test für Ende des Streams oder Ende der Nachricht oder Ende der Übertragung, oder überhaupt etwas Nützliches.
  • Nicht innerhalb der Schleifen spülen.
Verwandte Themen