Java Sockets: Как читать / писать объекты и строки? - PullRequest
3 голосов
/ 13 ноября 2011

Я пытаюсь написать программу клиент / сервер, где клиент может: * Написать строку на сервер * Получить объект с сервера

и сервер может: * Получить строку от клиента * Отправить объект клиенту.

Однако мои попытки пока оказались бесплодными, и я весьма разочарован. Я уверен, что делаю фундаментальный недостаток, но, будучи новичком в программировании на Socket, я просто не могу понять, в чем дело.

Что-то не так с моим выбором потоков, или есть лучший способ использовать потоки, которые я не использовал?

Отправляемый мной объект сериализуется, хотя объект никогда не записывается и не читается, поскольку сервер зависает на readUTF ()

Заранее благодарю за любую помощь.

//Used to receive a string input from client side
DataInputStream input = new DataInputStream(clientSocket.getInputStream());
// Used to output an object to client side
ObjectOutputStream oo = new ObjectOutputStream(clientSocket.getOutputStream());

// This is never executed..
clientInput = input.readUTF();
oo.writeObject(book);

Код клиента:

        // Used to read object from server side
        input = new ObjectInputStream(clientSocket.getInputStream());
        // Used to read input from command line
        keyboard = new BufferedReader(new InputStreamReader(System.in));
        // Used to send string to server
        output = new DataOutputStream(clientSocket.getOutputStream());

        cmdInput = keyboard.readLine();
        // Write to server, this executes at runtime.
        output.writeUTF(cmdInput);                              
        // Object is never sent, this line is not executed.
        book = (Book)input.readObject();

1 Ответ

0 голосов
/ 13 ноября 2011

Как правило, вам лучше использовать набор веб-служб (например, Apache CXF), чем делать это самостоятельно.

В частности, попробуйте вызвать flush() в потоке вывода на клиенте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...