我目前正在将API从C#转换为具有网络组件的Java.
C#版本似乎在使用它的类的持续时间内保持输入和输出流以及套接字打开.
它是否正确?
请记住,应用程序正在根据用户输入发送命令和接收事件,为每个"消息"打开一个新的套接字流是否更明智?
我正在维护一个ServerSocket来监听服务器抛出事件,但我不太确定为出站通信维护Socket和输出流是个好主意.
我并不习惯Socket编程.和许多开发人员一样,当我需要进行网络而不是在套接字层时,我通常在应用层工作,而且自从我在大学做这些事以来已经有5到6年了.
干杯求救.我想这更需要建议而不是一个明确的答案.
在保持连接开放的成本与创建这些连接的成本之间存在权衡.
创建连接需要花费时间和带宽.你必须进行3路TCP握手,启动新的服务器线程,......
保持连接开放主要是内存和连接.网络连接是受OS限制的资源.如果连接的客户端太多,则可能会耗尽可用的连接.它会花费内存,因为每个连接都会打开一个线程,并且具有关联状态.
正确的平衡将根据您期望的用途而有所不同.如果你有很多客户连接很短的时间,关闭连接可能会更有效率.如果你很少有客户连接很长一段时间,你应该保持连接打开...