簡體   English   中英

通過套接字多次發送序列化對象

[英]Sending serialized Objects multiple times over a Socket

客戶端通過套接字多次向服務器發送特定的對象。 代碼如下:

public void send(Operation operation, Object o){
    try{
    out.writeObject(operation);
    if (o != null) out.writeObject(o);
    out.flush();
    } catch (IOException e) {
        System.err.println("Couldn't write to OutputStream");
    }   
}

在對象中是一個從Integer到Integer的HashMap,多數民眾贊成在經常更改。 服務器通過以下方式接受消息:

User newUser = (User) oin.readObject();

第一次一切正常時,newUser對象包含新接收到的對象。 但是在執行第二,第三,...之后,newUser對象總是讀取舊對象(HashMap包含來自第一次通信的舊值)。 我究竟做錯了什么?

提前致謝!

您需要定期調用reset()以停止建立對象的緩存,從而防止看到這些對象的更改,或者您需要使用writeUnshared()

我會考慮每次在flush()之前調用reset()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM