【问题标题】:Speed difference in write to socket on slow and fast connections?在慢速和快速连接上写入套接字的速度差异?
【发布时间】:2017-11-22 12:08:04
【问题描述】:

对由 Java 套接字(在服务器端)支持的普通 Outputstream 的写入是否需要与快速和慢速连接的客户端相同的时间?

我怀疑不是,但我也可以怀疑内部套接字前面有某种缓冲区。

【问题讨论】:

    标签: java sockets stream


    【解决方案1】:

    有两个套接字缓冲区。一个用于输出,一个用于输入。如果您正在写入适合缓冲区的数据,则连接速度对于第一次写入并不重要

    之后会有明显的不同,慢速连接会阻塞很多,等待输出缓冲区的空间。当然,速度差异不会影响代码,您只会编写最终将被传输的数据,无论它发生得快还是慢。只有最终用户会注意到速度缓慢。

    【讨论】:

    • 为清晰的解释干杯@Kayaman!当您的服务器在 1 个套接字上接收数据并将其直接发送到其他客户端时,您不会注意到速度差异吗?然后 1 个慢速客户端将增加将接收到的数据发送到所有客户端所需的时间。我怀疑这意味着我必须将“接收数据”和“向客户端发送数据”解耦?
    • 不,您将拥有(在基本阻塞 IO 中)负责与每个客户端通信的单独线程。它根本不会影响其他客户。然后,这些线程可以拥有自己的消息缓冲区,具体取决于您的设计。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-20
    • 2015-05-11
    • 2012-11-11
    • 1970-01-01
    • 2013-05-19
    • 2011-04-11
    相关资源
    最近更新 更多