使用并发I / O的Java套接字编程

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

谢谢,Madhu

本教程应向您展示并发服务器的基础知识。 这是您可能还想看的另一个教程。 第二部分涉及线程和并发。

如果要使用普通套接字:

在这里你可以找到关于java套接字(具有在multithreading环境中管理它的原则) http://download.oracle.com/javase/tutorial/networking/sockets/clientServer.html

在这里你可以找到Java中的multithreadinghttp://download.oracle.com/javase/tutorial/essential/concurrency/procthread.html

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

请注意 :当你调用方法时,一个代表一个线程的类(因此它是从一个不同于你调用方法的线程访问的),你必须注意不要引起并发问题(你可以看到一些例子)我发送的第二个链接)。

使用Apache Mina它将使您无法在低级别实现和管理线程和套接字,并让您专注于您想要做的事情。

可能需要一天时间才能学会,但它确实会带来回报。 Mina也提供了出色的表现。

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

Apache MINA经常被称为:

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