gpt4 book ai didi

java - 在 Java 服务器应用程序中管理多个套接字连接

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:54:19 25 4
gpt4 key购买 nike

在我们的新项目中,我们需要实现一个服务器应用程序。此服务器获得 50,000(+) 个客户端的连接请求。问题是这些连接必须保持打开状态并且必须在某处进行管理。该应用程序应该像电话交换机一样工作。因此它可以获取已连接客户端的请求并将它们连接到其他(可能是几个)客户端,前提是它们也已连接。使用专有协议(protocol)。我的问题是:

如何(以及在​​哪里)管理打开的套接字?我应该把它们放在 HashMap 中吗?这对我来说听起来很好奇。但是我没有这么多开放连接的经验。

是否有支持此连接要求的可用框架?

感谢您的帮助!

最佳答案

How (and where) to manage the open sockets? Should I put them in a HashMap or something?

通常,每个套接字将由负责读取和写入套接字的线程管理。您还将拥有一个主线程,负责在预定义的网络接口(interface)和端口(使用 ServerSocket API 类)接收所有连接请求,然后可能会将实际处理工作移交给 worker/从属线程。在这种情况下,您应该为工作线程寻找一个线程池,因为创建 50k 线程很可能会使您的操作系统和硬件不堪重负。

此外,如果您确实要管理 50k 并发套接字,强烈建议使用 NIO API (java.nio.*) 而不是 Java 的普通 IO API,尽管我还没有看到太多需要超过 2-5k 的项目并发连接。 Java 世界中至少有两个已知的基于 NIO 的框架 - Apache MINAJBoss Netty .但是,我建议阅读 well written NIO tutorial , 在开始使用 NIO API 或 NIO 框架之前。

关于java - 在 Java 服务器应用程序中管理多个套接字连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7411744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com