0

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

这是我创建的类:


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

无论如何,当我将一个套接字发送到该类时,它会进入创建输入流的阶段,但实际上从未创建过该流。语法似乎是正确的,所以我只能假设存在某种我不知道的逻辑错误。在破译为什么这个类不会创建输入或输出流的任何帮助将不胜感激。

谢谢,

4

1 回答 1

7

在, 两端创建ObjectOutputStream 之前。ObjectInputStream的构造函数ObjectOutputStream将标头写入构造函数ObjectInputStream读取的流,因此如果创建第一个,ObjectInputStreams则会出现死锁。

于 2010-11-30T05:50:44.067 回答