我在套接字上使用ObjectOutputStream,因爲我創建了需要在客戶端和服務器之間傳輸的新類。 我還創建了一個獨特的線程,每隔一秒將一個字節發送到服務器,以便連續檢查連接並檢查它是否存活。Java - 通過套接字發送字節對象
byte b=1;
oos.writeObject(b);
我使用「字節」,因爲它是我可以發送的最小的對象(右?),以便服務器不會讀取更長的對象。
我的問題是如果服務器讀取一個字節對象(字節的大小)或一個8字節的對象(對象的大小) ?
我在套接字上使用ObjectOutputStream,因爲我創建了需要在客戶端和服務器之間傳輸的新類。 我還創建了一個獨特的線程,每隔一秒將一個字節發送到服務器,以便連續檢查連接並檢查它是否存活。Java - 通過套接字發送字節對象
byte b=1;
oos.writeObject(b);
我使用「字節」,因爲它是我可以發送的最小的對象(右?),以便服務器不會讀取更長的對象。
我的問題是如果服務器讀取一個字節對象(字節的大小)或一個8字節的對象(對象的大小) ?
如果您必須使用ObjectOutputStream,則發送哪個對象並不重要,因爲在發送第一個對象之後,將來會發送對該對象的引用。出於這個原因,我建議你發送一個特定的枚舉類似。
enum Control {
HEARTBEAT
}
您可以使用DataOutputStream更小的連線格式,其中1個字節是一個字節。鑑於IP數據包頭大約爲20個字節,發送1個字節或8個字節並不重要,因爲開銷遠高於此值。
一個字節是*不是您可以發送的最小對象;有一點是。一個字節由8位組成。布爾值相當於字節。使用'writeObject'將導致類,類簽名和可序列化字段被寫入到流中,所以大小會有所不同;我建議你自己測試一下Byte對象的情況。 – Vulcan
你的意思是一個對象大小是8字節? –
如何發送一個位? – Onca