0

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

とにかく、クラスにソケットを送信すると、入力ストリームを作成する段階になりますが、実際にストリームが作成されることはありません。構文は正しいように見えるので、私が気付いていない何らかの形の論理エラーがあると推測することしかできません。このクラスが入力ストリームまたは出力ストリームを作成しない理由を解読するのに役立つ情報があれば幸いです。

ありがとう、

4

1 に答える 1

7

ObjectOutputStream の前ObjectInputStream、両端を作成します。のコンストラクターは、のコンストラクターが読み取るObjectOutputStreamヘッダーをストリームに書き込むため、最初に作成するとデッドロックが発生します。ObjectInputStreamObjectInputStreams

于 2010-11-30T05:50:44.067 に答える