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

时间:2011-10-19 08:03:08

标签: java network-programming

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

谢谢, 马杜

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

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

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

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

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

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

答案 2 :(得分:0)

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

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

  

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

     

Apache MINA经常被称为:

     

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