2010-11-30 22 views
0

J'essaye de créer un serveur en Java qui maintiendra jusqu'à 4 connexions simultanément. Je pensais que tenir les informations pertinentes dans un tableau servirait mon but, eh bien, mais j'ai quelques problèmes.java flux d'objets

Voici la classe que j'ai créé:


import java.net.*; 
import java.io.*; 
public class tcpConnects{ 
private ObjectInputStream input; 
private ObjectOutputStream output; 
private int player; 
public tcpConnects(int playerNumber, Socket connect) { 
    // TODO Auto-generated method stub 
     try{ 
      System.out.println("create InputStream"); 
      input= new ObjectInputStream(connect.getInputStream()); 
      System.out.println("create OutputStream"); 
      output= new ObjectOutputStream(connect.getOutputStream()); 
      System.out.println("streams created"); 
      //sendData("Welcome!"); 
      player=playerNumber; 
     }catch (IOException ioException){ 
      ioException.printStackTrace(); 
     } 
    } 
    public ObjectInputStream getInput(){ 
     return input; 
    } 
    public void setInput(ObjectInputStream in){ 
     input=in; 
    } 
    public ObjectOutputStream getOutput(){ 
     return output; 
    } 
    public void setOutput(ObjectOutputStream out){ 
     output=out; 
    } 
    public int getPlayer(){ 
     return player; 
    } 
    public void sendData(String data){ 
     try{ 
      output.writeObject(data); 
      output.flush(); 
     }catch (IOException ioException){ 
      ioException.printStackTrace(); 
     } 
    } 
} 

De toute façon, quand j'envoie une prise dans la classe, il arrive à l'étape de la création du flux d'entrée, mais le flux est jamais réellement créé . La syntaxe semble être correcte, donc je ne peux que supposer qu'il existe une forme d'erreur de logique dont je ne suis pas au courant. Toute aide pour déchiffrer pourquoi cette classe ne créera pas un flux d'entrée ou de sortie serait grandement appréciée.

Merci,

Répondre

7

Créer le ObjectOutputStreamavant la ObjectInputStream, aux deux extrémités. Le constructeur de ObjectOutputStream écrit un en-tête dans le flux que le constructeur de ObjectInputStream lit, donc si vous créez le ObjectInputStreams d'abord vous obtenez un blocage.

+0

Merci, EJP, vous avez été d'une grande aide! Créer le flux de sortie d'abord sur les deux extrémités a parfaitement fonctionné! – Rolan