簡體   English   中英

如何通過套接字連接發送實例?

[英]How can I send an instance over a socket connection?

我正在嘗試編寫兩個Java程序。 一個模擬服務器,一個模擬客戶端。

我怎樣才能通過套接字發送Response類的實例?

Response類表示服務器連接的狀態代碼。 例如404 Not Found等

不幸的是,我不允許使用序列化。

任何建議將不勝感激。

在某種程度上,必須進行序列化才能通過連接發送對象。 我只能假設您對不允許使用序列化的評論指的是無法使用Serializable而不是全面禁止序列化(這沒有任何意義)。 實現此目的的一種非常簡單的方法是使用外部序列化庫,例如gson Gson將對象序列化為JSON字符串,您可以通過套接字傳輸該字符串,然后使用相同的庫將其反序列化為另一端的對象。 您當然可以使用您喜歡的格式的任何首選序列化庫,例如。 XML,json,YAML,......

您不會發送Response類本身的實例。 通過網絡發送內容時,客戶端和服務器計算機可以理解字節。 您的應用程序可以理解多於字節,它可以理解特定的表示。 例如,您的服務器可能會發送您的Response類的JSON表示,如:

{
   "response" : {
       "code":404
   }
}

然后您的客戶端必須能夠理解這個字節序列的含義。 這基本上就是一個協議:兩台機器如何通信。

無論服務器或客戶端使用何種語言編寫,響應都是實體。 在Java中,您可以使用Class來表示它,在C ++中您可以使用struct 但是,兩者都需要知道,當您與外部應用程序系統進行通信時,他們必須將其置於每個人都能理解的格式中,無論是json,xml還是其他任何格式。

至於通過套接字發送這個,Oracle 在這里有一個很好的教程 您從套接字獲取OutputStream並開始編寫表示。

暫無
暫無

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

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