ObjectOutputStream не отправляет данные - PullRequest
0 голосов
/ 01 февраля 2012

Код клиента:

try {
            Socket socket = new Socket(ip, port);
            OutputStream output = socket.getOutputStream();
            ObjectOutputStream out = new ObjectOutputStream(output);
            InputStream input = socket.getInputStream();
            ObjectInputStream in = new ObjectInputStream(input);
            out.writeByte(1);
            FileHandler fh = (FileHandler) in.readObject();
            //processing stuff
            out.flush();
            out.close();
            output.flush();
            output.close();
            input.close();
            in.close();
            socket.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

Код сервера:

        try {
            ServerSocket server = new ServerSocket(port);
            Socket socket = server.accept();
            InputStream input = socket.getInputStream();
            ObjectInputStream in = new ObjectInputStream(input);
            int type = in.readByte();
            //processing stuff (which includes closing the streams and sending FileHandler object)
            socket.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

Сервер никогда не получает байт. Он просто ждет байта от клиента и никогда не приходит. Я не уверен, почему он не отправляет или не получает. Любая помощь очень ценится.

Ответы [ 2 ]

3 голосов
/ 01 февраля 2012

Если бы мне пришлось догадываться, это потому, что в вашем клиенте вы блокируете на in.readObject(); ожидание, пока сервер отправит вам что-то, таким образом, никогда не сбрасывает поток вывода, таким образом ... ничего не отправляется.

Переместите ваше чтение на после того, как вы очистите выходной поток.

1 голос
/ 01 февраля 2012

Попробуйте использовать методы writeObject и readObject. Также напишите в потоке целое число, а не int. Прочитайте эту действительно хорошую лекцию , прежде чем продолжить.

Это также хорошая лекция для вашей проблемы.

Привет!

...