2012-12-13 33 views
2

我打算使用objectOutputStream,但聽說這是不可靠的,因爲不同的java版本可能以不同的方式反序列化對象。 '可怕的跨架構練習..'通過從java服務器到Android客戶端的TCP套接字發送對象

那麼我怎麼可以在這些設備之間發送對象和數組,接收端可以將合適的對象或數組數據合併在一起?

+0

簡短的回答 - 定義並實現服務器和客戶端之間的數據交換協議(xml,json等) – KevinDTimm

+0

這種方法與其他方法相比如何?這是最好的方法嗎?如果是這樣,爲什麼是這樣呢?謝謝。 PS對於以前從未這樣做過的人來說聽起來很相似:X –

回答

-1

'java server',你使用什麼樣的協議?

一種選擇是RPC,這是如果你使用HTTP在java.rmi中

定義,最簡單的選擇是實現Tomcat的/碼頭小servlet和使用RESTful服務

的數據格式可以是xml,json,bin等

+0

它實際上只是一個用java編寫的服務器。它到目前爲止所做的只是接收一個套接字:\t ServerSocket sock = new ServerSocket(9999);然後爲每個連接Socket newock = sock.accept();它創建一個線程來讀取和響應傳入的行。協議? TCP/IP會是答案嗎?我沒有使用任何寧靜的東西。 –

+0

TCP特別會是答案 –

+0

啊,我想到了標題和標籤。那麼在這種情況下我的選擇是什麼? –

0

編輯:只讀你在做什麼。您可能不需要Web服務器。很多人推薦一個,因爲大量支持Web服務器。您當然使用TCP或UDP在服務器和客戶端之間進行通信。你需要有一定的協議,如果你想要的數據交換,和這裏的大多數人都熟悉XML或JSON

如果你需要靈感,嘗試尋找像FTP幾個協議,甚至BT下載

Web服務器案例:

我編寫了一個用於大學作業的Java Web服務器。如果你對TCP/IP有很好的把握,Web服務器實際上很簡單。代碼散佈在網上的任何地方,雖然有點難以破譯到底發生了什麼,但是一旦你這樣做了,那就不壞了

你絕對應該檢查HTTP的RFC,儘管這些都傾向於措辭在法律上。除此之外,在服務器上,你基本上是逐行閱讀字符串,你應該能夠弄清楚在服務器上做什麼(例如GET /somefile.html HTTP/1.0)。只需在這些行上執行System.out.println並從那裏開始。客戶端代碼也是如此。您也可以使用telnet來查看網絡服務器的功能

爲了測試,我實際上建議您只是嘗試使用Firefox,Chrome,IE,Safari甚至捲曲腳本等常規網絡瀏覽器。這是一個簡單的測試,看看你的服務器是否正常運行

就數據交換而言,建議使用XML或JSON,主要是如果你學會了如何處理它,你會得到100個經驗值。不過,爲了讓事情開始,您可以通過發送和接收「Wazzzaaap」等文本開始。 Web瀏覽器也可以獲取XML和JSON數據。

+0

我確實希望避免使用web服務器和HTTP,除非明確表示我的需求不適合當前的實現。那麼,如何將JSON或XML用於例如傳輸陣列列表或更復雜的對象呢? –

相關問題