gpt4 book ai didi

java - 网络编程 : to maintain sockets or not?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:01:49 26 4
gpt4 key购买 nike

我目前正在将一个 API 从 C# 转换为具有网络组件的 Java。

C# 版本似乎在其类被使用期间保持输入和输出流以及套接字打开。

这是正确的吗?

请记住,应用程序根据用户输入发送命令和接收事件,为每个“消息”打开一个新的套接字流是否更明智?

我正在维护一个 ServerSocket 来监听服务器抛出的事件,但我不太确定为出站通信维护一个 Socket 和输出流是个好主意。

我不太习惯Socket编程。与许多开发人员一样,当我需要进行网络连接时,我通常在应用程序层工作,而不是在套接字层工作,我在大学里从事这些工作已经有 5 或 6 年了。

为帮助干杯。我想这更多的是寻求建议而不是明确的答案。

最佳答案

保持连接打开的成本与创建这些连接的成本之间存在权衡。

创建连接 需要时间和带宽。你必须进行 3 次 TCP 握手,启动一个新的服务器线程,...

保持连接打开主要消耗内存和连接。网络连接是一种受操作系统限制的资源。如果连接的客户端太多,则可能会用完可用连接。这将消耗内存,因为您将为每个连接打开一个线程,并具有其关联状态。

根据您预期的使用情况,正确的平衡会有所不同。如果您有很多客户端在短时间内连接,关闭连接可能会更有效。如果长时间连接的客户端很少,您可能应该保持连接打开...

关于java - 网络编程 : to maintain sockets or not?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/519850/

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