在构建java套接字服务器时,我一直在阅读过去几天关于io和nio之间的区别。对于我的使用,我需要一个可以运行大量连接和离子的服务器来应对这个伎俩。 我唯一的担心是,它实施起来要慢一些,而且难以实现,而不是为每个连接运行一个线程。所以我想为什么不使用相同的线程和java.nio的逻辑,并建立一个服务器有一个线程,检查所有打开的连接,当有新事件时,它会打开一个新的线程来处理它。我以这种方式认为我享受这两个世界......你有什么建议?为套接字服务器实现我自己的java.nio
回答
NIO几乎完全依赖于JNI,所以如果你想再次实现它,你实际上必须编写大量的C/++和OS API接口代码。
我认为现有的Java实现已经相当不错了。例如,Selector类将系统调用包装为等待多个文件描述符。几乎没有什么可以提高效率的。
我建议你不理解NIO的要点,即只使用一个线程。这当然是复杂的,并且在1000名客户以下是否有任何需求可能是有争议的,可能是10,000,甚至可能是100,000。我会用java.net实现你的服务器,让它运行并为阶段2保存java.nio,如果你到达那里并证明你确实需要它。
编辑:我肯定会忘记这个滚动自己的概念。你大大低估了这项任务(Sun 1.4.0,1.4.1,1.4.2在它确实正常工作之前),而你似乎正在瞄准两全其美。因为没有更多的东西,所以你不能比Sun用java.nio做更多的事情。可以说少一点;-)
首先它是一个好主意。第二我可以在一个线程中完成所有操作。是不是那个妞呢?为每个tesk运行一个新线程并在之后进行cloae? –
@AsafNevo您需要为java.net每个连接创建一个单独的线程。 – EJP
- 1. 在J2ee服务器中实现服务器套接字
- 2. 我应该实现自己的TCP/IP套接字超时吗?
- 3. 创建我自己的YAJSW Java服务包装器的实现?
- 4. 我自己的服务器
- 5. liferay-6.1 - 实现自己的服务
- 6. 如何实现客户端 - 服务器架构的服务器TCP套接字
- 7. 在我的机器上实现我自己的电子邮件服务器
- 8. 像Tcl“套接字服务器”套接字服务器框架
- 9. 哪个更适合用于基本服务器/客户端套接字实现,“套接字”或“套接字服务器”的服务器?
- 10. Android的TCP套接字客户端/服务器实现
- 11. 使用C中的BSD套接字实现FTP服务器
- 12. 用于NodeJS的Web套接字服务器端实现
- 13. 如何实现我自己的Cirrus(以前称为Stratus)服务器?
- 14. 为WebRTC应用程序实现我们自己的STUN/TURN服务器
- 15. 如何在服务器端C#上实现套接字?
- 16. java客户端服务器套接字编程实现问题
- 17. 首选套接字策略文件服务器实现?
- 18. 超高性能套接字服务器 - 实现细节
- 19. 实现使用Java套接字服务器基本
- 20. 如何在Python中实现非阻塞套接字服务器
- 21. Web服务器套接字
- 22. 套接字服务器
- 23. Android - 服务器套接字
- 24. PHP套接字服务器
- 25. Java服务器套接字
- 26. Silverlight服务器套接字
- 27. 实现我自己的DBGrid
- 28. 实现web套接字服务器在Azure云服务Web角色
- 29. android ACRA 4.8崩溃报告实现自己的服务器
- 30. VMC用我自己的服务器
有像netty和灰熊这样的多个高性能nio库,它们应该适合你。 – Bill