2011-10-19 71 views
0

我剛剛得到一個assignment.It是設計它接收客戶端connections.The服務器的工作就是接受它,並保持所有連接的客戶端的跟蹤一個java socket服務器,它具有廣告連接的客戶端列表中的所有客戶端connect.I是新手到Java.I只知道這個任務必須與threads.I的幫助下完成了在Java的I/O,網絡和Threads.But一些知識我無法將所有這些概念合作到一個應用程序中。如果有人提供模型程序,或者可能如何繼續,那將是有幫助的,那麼這將有所幫助。併發我的Java Socket編程/ O

感謝, 馬杜

回答

4

This教程應該告訴你併發服務器上的基礎知識。 This是另一個你可能也想看看的教程。第二個涉及線程和併發性。

+0

謝謝....但我需要維護客戶端列表....並將其顯示給客戶端...你是否也有一個例子... – Madusudanan

+0

你可以創建一個列表或一個hasmmap。這就是爲什麼我包含了併發教程,以便您可以查看它並創建線程安全列表。 – npinti

+0

哦....實際上第二個鏈接並沒有打開..我忘了前面的't'...無所謂....非常感謝你的幫助:) – Madusudanan

0

如果你想使用普通插座:

在這裏你可以找到關於Java的插座(含在多線程環境中管理它的原理) http://download.oracle.com/javase/tutorial/networking/sockets/clientServer.html

,在這裏你可以找到關於多線程在爪哇 http://download.oracle.com/javase/tutorial/essential/concurrency/procthread.html

這是可能的解決方案之一,你可以用很多方式設計你的: 每個線程管理一個連接與客戶。 您有哪些接受連接並保持活動連接 的名單在你叉,其管理也有一個線程每一個新連接的主類。 您定義了一個管理線程的類,它公開了一個同步方法以通知新客戶端。 每次主類獲取一個新的連接,它通過在上一步中定義的方法通知另一方。

注意:當你調用方法中的一種類,它代表一個線程,你一定要小心,不要在併發問題承擔(因此它是從不同的線程比您所呼叫的方法中的一個訪問)(你可以在我發送的第二個鏈接中看到一些示例)。

0

使用Apache Mina它會釋放你從執行和低水平管理線程和插座,讓你專注於你想要做什麼。

這可能需要時間來學習,但它確實回報。 Mina也有很好的表現。

Apache MINA是一個網絡應用程序框架,它可以幫助用戶輕鬆開發高性能和高可擴展性網絡應用程序。它通過Java NIO提供了各種傳輸(如TCP/IP和UDP/IP)上的抽象·事件驅動的異步API。

的Apache MINA通常被稱爲:

NIO框架·庫 客戶端·服務器框架·庫或 聯網·socket庫。 但是,它遠不止於此。請查看可實現快速網絡應用程序開發的功能列表,以及人們對MINA的看法。請抓住自己的下載,嘗試我們的快速入門指南,衝浪我們的常見問題或開始加入我們的社區