2013-09-21 46 views
0

我有一個項目需要我創建一個將連接到MySQL數據庫的Java服務器。該服務器將處理來自客戶端的請求,從數據庫發送數據。 來自客戶端的請求將是:如何使用NIO從服務器檢索數據

  • 檢查,如果用戶是在數據庫中註冊
  • 將用戶添加到數據庫
  • 得到用戶的名單和他們的上線(這是我使用HashMap的地方)

經過一番搜索我已經在使用NIO的結論,所以我不會得到太多的線程來處理多個客戶端請求。 我的問題是,我不明白如何當你想發送,例如,一個列表或一個HashMap,你可以從通道檢索數據。我的意思是,我已經看到了read(buffer)方法的工作原理。我只是無法理解 - 例如 - 你如何從緩衝區獲取HashMap對象,或者如何檢索任何種類的「結構化」數據。如果有人能夠解釋(也許是一個例子),那會很棒。

也許有另一種方式來溝通我需要的數據,這對我來說會更容易理解。我不知道。非常感謝您的洞察力。

P.S. :我的問題不是因爲NIO,我沒有得到它,我與典型的輸入/輸出流有同樣的問題。

我應該提到,實際的項目是創建一個Java服務器,客戶端將是Android設備。但是因爲我有點新手,所以我想在開始使用android之前,先測試兩個桌面應用程序,Java應用程序之間的通信。 我提到這個是因爲我已經看到了一些關於Java RMI的東西,它允許您遠程使用服務器的方法,但我認爲你不能在Android中使用它。

+0

也許你想先序列化HashMap到字節? –

回答

0

您可以使用序列化機制讀取和寫入對象。涉及的類是ObjectOutputStream和ObjectInputStream。雖然它們是基於流的,但它們不適合nio模型。他們涵蓋在官方教程中:http://docs.oracle.com/javase/tutorial/essential/io/objectstreams.html

另一種方法是使用Google協議緩衝區。

+0

非常感謝您的回答。我現在正在研究Google協議緩衝區。在完成示例/教程後會回來。 – akafortes

相關問題