2010-11-30 62 views
0

我想在java中创建一个服务器,它将同时维护多达4个连接。我认为将相关信息保存在一个数组中可以达到我的目的,但是我遇到了一些麻烦。Java对象流

这里是我创建的类:


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

反正,当我发送一个插座进级,它会创建输入流的阶段,但后来实际上从来不创建的流。语法看起来是正确的,所以我只能假设有一些我不知道的逻辑错误。任何帮助解密为什么这个类不会创建一个输入或输出流将不胜感激。

感谢,

回答

7

创建的ObjectInputStream,在两端的前ObjectOutputStreamObjectOutputStream的构造函数向构造函数ObjectInputStream读取的流写入头文件,因此如果首先创建ObjectInputStreams,则会导致死锁。

+0

谢谢,EJP,你一直是一个很好的帮助!首先在两端创建输出流非常完美! – Rolan 2010-11-30 12:37:16