自從我開始思考如何使用Java套接字發送和接收數據。我希望你能幫助我找到一個好辦法。java套接字發送和接收
我已經構建了一個服務器/客戶機結構,客戶機連接到服務器並獲取自己的線程來處理請求 - 響應方法。這些信息以XML格式包裝。
服務器在開始時啓動阻塞套接字讀取。首先,我使用writeInt()來傳輸XML消息的長度。之後,服務器讀取長度字節的數量並解析消息。傳輸之後,客戶端進入接收狀態並等待響應。
這很好,但是在客戶端驗證服務器之後等待將會出現並阻止的事情。
但是當服務器沒有需要傳輸的信息時我應該怎麼做。我可以嘗試銷燬讀取阻塞並將消息發送給客戶端。但是,如果客戶想到他也有消息並開始發送,會發生什麼。在那一刻,沒有人會聽。
因此,也許我可以使用某種緩衝區,但我有這種感覺,這不是我應該去的方式。
我一直在尋找一段時間,發現了一些有趣的信息,但我沒有很好地理解它們。可悲的是,我的書只是關於這個簡單的套接字模型。
也許我應該使用兩個線程。一個發送一個接收。服務器有一個數據庫,用於存儲消息並等待傳輸。所以當服務器收到一條消息時,他會將該消息存儲在數據庫中,並且「接收到的消息」等答案也會存儲在數據庫中。發送者線程會查看是否有新消息並將「收到消息」發送給客戶端。這種方法不會以毫秒爲單位發送答案,但我可以想象它會工作得很好。
我希望我給你足夠的關於我所嘗試的信息。你會推薦我如何實施這種溝通?
感謝
看看http://code.google。com/p/quickserver /(下載壓縮包含所有代碼和許多抽樣以便開始使用) – tgkprog