2016-07-25 6 views
0

Ich versuche, ein Client/Server-Chat-Room-Programm zu erstellen, und jede Client-GUI muss eine Liste der vom Server gesendeten aktiven Benutzer anzeigen. Dazu muss ich die Anzahl der Benutzer in der Liste für den Client senden. Wenn ich jedoch versuche, einen int über den Socket zu senden, wird ein Typenkonfliktfehler ausgegeben. Genauer gesagt, wenn ich versuche, es als String zu senden und es dann zu einem int zu analysieren, erscheint eine zufällige alphanumerische Zeichenfolge aus dem Nichts. Ich weiß, dass die Variable, die ich sende, definitiv eine ganze Zahl ist, obwohl ich nicht verstehe, was vor sich geht. Ich habe die verschiedenen Lösungen auch als Kommentare hinterlassen. Server:Integer wird nicht über einen Socket gesendet und wird als Zeichenfolge vom Client empfangen

public void updateClientUserList() 
     { 
      //int userListSize = userList.size(); 
      output.print((int)userList.size()); 


      for(int i = 0; i < userList.size(); ++i) 
      { 
       String user; 
       user = userList.get(i).getUsername(); 
       output.println(user); 
      } 

      chatLog.add("New user(s) has joined the chatroom"); 

     } 

Auftraggeber:

public static void updateUserList() 
{ 
    String users = ""; 
    //String numInput = input.next(); 
    int userListSize = input.nextInt();//Integer.parseInt(numInput); 

    //for(int i = 0; i < userListSize; ++i) 
    //{ 
    // String user = input.nextLine(); 
    // userList.add(i, user);    
    //} 

    //users = userList.get(0); 

    for(int i = 0; i < userListSize; ++i) 
    { 
     users += input.nextLine(); 
    } 

    userListBox.setText(users); 

} 
+1

Hallo, bitte lesen, wie ein [MCVE] erstellen – OldProgrammer

Antwort

1

ein int Sie müssen Dataoutputstream zu übergeben; dann rufen Sie u wie dieses

sockDataOut = new DataOutputStream(socket.getOutputStream()); 
sockDataOut.writeInt(11); 

Und in der Client-Seite writeInt u tun:

sockDataIn = new DataInputStream(socket.getInputStream()); 
sockDataIn.readInt();