我正在嘗試編寫兩個Java程序。 一個模擬一臺服務器,一個模擬一個客戶端。如何通過套接字連接發送實例?
我怎麼能通過套接字發送一個Response類的實例?
Response類表示服務器連接的狀態碼。例如404未找到等
我不能不幸,使用序列化。
任何意見將不勝感激。
我正在嘗試編寫兩個Java程序。 一個模擬一臺服務器,一個模擬一個客戶端。如何通過套接字連接發送實例?
我怎麼能通過套接字發送一個Response類的實例?
Response類表示服務器連接的狀態碼。例如404未找到等
我不能不幸,使用序列化。
任何意見將不勝感激。
您不會發送Response類本身的實例。當通過網絡發送東西時,客戶機和服務器機器理解字節。你的應用程序可以理解比字節更多的東西,它可以理解特定的表示。例如,您的服務器可能會派出Response類象的JSON表示:
{
"response" : {
"code":404
}
}
那麼你的客戶端必須能夠了解哪些字節序列表示。這基本上就是一個協議:兩臺機器如何進行通信。
無論用什麼語言編寫服務器或客戶端,Response都是一個實體。在Java中,您可以使用Class
來表示它,在C++中,您可以使用struct
。但是,兩者都需要知道,當您與外部應用程序系統進行通信時,他們必須將其置於每個人都能理解的格式,無論是json,xml還是其他任何格式。
至於通過socket發送此,甲骨文有一個很好的tutorial here。您從套接字獲取OutputStream
並開始編寫您的表示。
你總是需要某種序列化。確切的約束是什麼? – 2013-03-22 15:41:08
「我不允許使用序列化」是什麼意思?肥皂? XML? JSON?你不能寫你自己的客戶序列化程序?要通過線路傳輸,數據*必須*以*某種方式序列化。 – 2013-03-22 15:42:35
您不允許使用Java序列化?爲什麼?你可以使用自定義序列化(比如說,字符串流上的JSON)?此外,你應該考慮改變問題的標題(是誤導,應該說是實例,而不是類) – nMoncho 2013-03-22 15:42:54