我試圖寫一個客戶機/服務器程序,客戶端可以: *將一個字符串寫入服務器 *從服務器Java套接字:如何讀取/寫入對象和字符串?
,接收對象和服務器可以: *從客戶端 接收一個字符串*發送一個對象給客戶端。
不過,我迄今爲止的嘗試已經證明是徒勞的,我很沮喪。我確信我正在犯一個基本的缺陷,但是對於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();
由於您使用ObjectInputStream和ObjectOutputStream,我假設您想使用TCP。你可以在你爲服務器和客戶端創建clientSocket的地方包含代碼嗎?您正在使用服務器的ServerSocket類,對嗎? –
是的我正在使用ServerSocket服務器和客戶端的套接字。客戶端服務器連接工作正常,因爲我能夠簡單地傳遞字符串。這是當我添加對象功能,它開始打破。 – BodhiByte
但是在你調用writeObject之前你的客戶端代碼被卡住了...... –