потоки объектов Java - PullRequest
       13

потоки объектов Java

0 голосов
/ 30 ноября 2010

Я пытаюсь создать сервер в 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();
        }
    }
}

В любом случае, когда я отправляю сокет в класс, он достигает стадии создания входного потока, но тогда поток фактически не создается. Синтаксис кажется правильным, поэтому я могу только предположить, что существует какая-то логическая ошибка, о которой я не знаю. Будем весьма благодарны за любую помощь в расшифровке, почему этот класс не будет создавать поток ввода или вывода.

Спасибо

1 Ответ

7 голосов
/ 30 ноября 2010

Создайте ObjectOutputStream до ObjectInputStream на обоих концах.Конструктор ObjectOutputStream записывает заголовок в поток, который читает конструктор ObjectInputStream, поэтому, если вы сначала создадите ObjectInputStreams, вы получите тупик.

...