我有這個問題,我無法弄清楚什麼是錯的。我在互聯網上搜索過,但沒有成功。我無法通過Java中的套接字發送對象
因此,我必須通過Java中的套接字發送一個對象,而我無法弄清楚如何去做。我嘗試了很多方法。我序列化了對象,我試圖直接寫對象。但似乎沒有任何工作。
細節是我有一個並行的聊天。有時當我打開一個ObjectOutputStream或ObjectInputStream時,我會陷入僵局。我想你們可以幫助我。
它是一個hang子手遊戲,客戶端連接到服務器,服務器應該向客戶端發送一個隨機詞,這是一個對象。
服務器:
try{
socketConexao = socketRecepcao.accept();
toClient = new DataOutputStream(socketConexao.getOutputStream());
fromClient = new BufferedReader(new InputStreamReader(socketConexao.getInputStream()));
//starts the chat
Thread chat = new Thread(this);
chat.start();
}catch(IOException e){}
//i dont really know how to send the object
try{
byte[] bytes = serialize(palavraSorteada);
toClient.write(bytes);
} catch (IOException e){
e.printStackTrace();
}
客戶:
socketCliente = new Socket(ip, port);
toServer = new DataOutputStream(socketCliente.getOutputStream());
fromServer = new BufferedReader(new InputStreamReader(socketCliente.getInputStream()));
// starts the chat
Thread chat = new Thread(this);
chat.start();
}catch(IOException e){System.exit (0);}
// and dont really know how to receive the object
try{
ObjectInputStream os = new ObjectInputStream(socket.getInputStream());
palavraSorteada = (Palavra) os.readObject();
os.close();
}catch(Exception e){
e.printStackTrace();
}
你能提供一個更簡單的例子嗎?有很多代碼與你的問題無關。你沒有解釋爲什麼這不起作用,或者你爲什麼編寫二進制文件,但試圖讀取文本,或者你爲什麼要使用DataOutputStream。 –
發送和接收時使用相同的數據協議可能是值得的...即使用ObjectOutputStream和ObjectInputStream,而不僅僅是一個。 –
是的,我意識到這一點。它的工作現在。謝謝。 – bfagundes