Я пытаюсь написать программу клиент / сервер, где клиент может:
* Написать строку на сервер
* Получить объект с сервера
и сервер может:
* Получить строку от клиента
* Отправить объект клиенту.
Однако мои попытки пока оказались бесплодными, и я весьма разочарован. Я уверен, что делаю фундаментальный недостаток, но, будучи новичком в программировании на 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();