【问题标题】:Java Socket Programming with concurrent I/O具有并发 I/O 的 Java Socket 编程
【发布时间】:2011-10-19 08:03:08
【问题描述】:

我刚接到一个任务。它是设计一个接受传入客户端连接的 java 套接字服务器。服务器的工作是接受它并跟踪所有连接的客户端,它必须将连接的客户端列表通告给所有连接的客户端。我是 Java 的新手。我只知道这项任务必须在线程的帮助下完成。我对 Java I/O、网络和线程有一些了解。但我无法协作所有这些概念在一个单独的应用程序中。如果有人提供一个模型程序,或者如何进行,那将会很有帮助。

谢谢, 马杜

【问题讨论】:

    标签: java network-programming


    【解决方案1】:

    This 教程应该向您展示并发服务器的基础知识。 This 是您可能还想查看的另一个教程。第二个更多地处理线程和并发。

    【讨论】:

    • 谢谢....但我需要维护客户列表....并将其显示给客户...您是否也有一个示例...
    • 您可以创建一个列表或一个hasmmap。这就是我包含并发教程的原因,以便您可以查看它并创建一个线程安全列表。
    • 哦....实际上第二个链接没有打开..你忘记了前面的't'...没关系....非常感谢你的帮助:)
    • 已修复。谢谢你让我知道:)
    【解决方案2】:

    如果您想使用普通套接字:

    在这里您可以找到有关 java 套接字的信息(以及在多线程环境中管理它的原则) http://download.oracle.com/javase/tutorial/networking/sockets/clientServer.html

    在这里您可以找到有关 Java 中的多线程的信息 http://download.oracle.com/javase/tutorial/essential/concurrency/procthread.html

    这是可能的解决方案之一,您可以通过多种方式设计您的解决方案: 每个线程管理一个与客户端的连接。 您有一个主类,它接受连接并保留活动连接列表 在每个新连接处,您都会派生一个管理它的线程。 您定义一个管理线程并公开同步方法以通知新客户端的类。 主类每次获得新连接时,都会通过上一步定义的方法通知对方。

    注意:当您调用一个代表线程的类的方法时(因此,它是从与您调用该方法的线程不同的线程访问的)您必须小心不要招致并发问题(您可以在我发送的第二个链接中看到一些示例)。

    【讨论】:

      【解决方案3】:

      使用Apache Mina,它会让你从底层实现和管理线程和套接字中解放出来,让你专注于你想做的事情。

      可能需要一天的时间来学习,但它确实有回报。 Mina 也提供了出色的性能。

      Apache MINA 是一个网络应用程序框架,帮助用户轻松开发高性能和高扩展性的网络应用程序。它通过Java NIO在TCP/IP和UDP/IP等各种传输上提供了一个抽象的·事件驱动·异步API。

      Apache MINA 通常被称为:

      NIO 框架·库, 客户端·服务器框架·库,或 一个网络·套接字库。 然而,它远不止于此。请查看支持快速网络应用程序开发的功能列表,以及人们对 MINA 的评价。请自行下载,尝试我们的快速入门指南,浏览我们的常见问题解答或开始加入我们的社区

      【讨论】:

        猜你喜欢
        • 2018-06-14
        • 2013-06-15
        • 2011-05-02
        • 2011-12-16
        • 2017-12-13
        • 2022-10-07
        • 2016-07-11
        • 2017-02-27
        • 2017-05-17
        相关资源
        最近更新 更多