-1
我正在做一個客戶端服務器夫婦。我的客戶端很好地連接到服務器,它通過套接字創建ObjectInputStream(socket.getInputStream()),從服務器到客戶端,反之亦然。然後出於一些神祕的原因,我的ObjectInputStream服務器以某種方式捕獲一個空對象。客戶端沒有通過套接字發送任何東西(我確實通過對象發送方法使/ / /使其確實,甚至是早先發送的所有對象的System.out.printed)服務器僅捕獲該神祕對象一次,並且之後客戶端發送的所有對象的工作方式與他們應該一樣。Java ObjectInputStream(socket.getInputStream())捕獲空對象
class ClientThread extends Thread {
//The socket where to listen/talk
Socket socket;
ObjectInputStream sInput;
ObjectOutputStream sOutput;
InputStream fInput;
OutputStream Output;
//my unique id (easier for deconnection)
int id;
//Objects that we will be receiving
Incomingdata datain;
//the date we connect
String date;
Player player;
boolean Connected = false;
//Constructor
ClientThread(Socket socket){
id = uniqueId++;
this.socket = socket;
try{
sOutput = new ObjectOutputStream(socket.getOutputStream());
sInput = new ObjectInputStream(socket.getInputStream());
Output = socket.getOutputStream();
} catch (Exception e){
System.out.println("Couldn't create Input/Output streams");
}
date = new Date().toString();
}
// what will run forever
public void run() {
// to loop until LOGOUT
Connected = true;
while(Connected) {
try {
datain = (Incomingdata) sInput.readObject(); //<--- this catches the mystical null! Even if nothing is sent over the socket?
}
catch (IOException e) {
TextArea.AddLine("Exception reading Streams: " + e);
break;
}
catch(ClassNotFoundException e2) {
break;
}
當我解釋的人有一天,對象與數據輸入/輸出流技術從一個過去時代,在這個問題上仍然存在大端和小端等問題,並且沒有良好的通信標準。我們現在擁有XML和JSON - 它們都比使用對象流更好的解決方案 – ControlAltDel 2014-10-28 18:43:26
我認爲這實際上不是我的問題的答案嗎? – user3738243 2014-10-28 19:18:38
似乎這個問題已經消失了,因爲它出現了! – user3738243 2014-10-28 19:26:57