Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Language agnostic 套接字限制,因为客户端读取数据的速度不够快?_Language Agnostic_Sockets_Throttling_Throughput - Fatal编程技术网

Language agnostic 套接字限制,因为客户端读取数据的速度不够快?

Language agnostic 套接字限制,因为客户端读取数据的速度不够快?,language-agnostic,sockets,throttling,throughput,Language Agnostic,Sockets,Throttling,Throughput,我有一个通过TCP套接字的客户机/服务器连接,服务器尽可能快地向客户机写入数据 查看我的网络活动,生产客户端接收数据的速度约为2.5 Mb/s 我编写的一个新的轻量级客户机只是读取和基准测试速率,其速率约为5.0Mb/s(这可能是服务器可以传输的最大速率) 我想知道是什么控制了这里的速率,因为客户端没有向服务器发送任何数据来告诉它任何速率限制。在TCP中,它是客户端。若服务器的TCP窗口已满,则需要等待来自客户端的更多确认。它隐藏在TCP堆栈中,但TCP引入了保证传递,这也意味着服务器发送数据的

我有一个通过TCP套接字的客户机/服务器连接,服务器尽可能快地向客户机写入数据

查看我的网络活动,生产客户端接收数据的速度约为2.5 Mb/s

我编写的一个新的轻量级客户机只是读取和基准测试速率,其速率约为5.0Mb/s(这可能是服务器可以传输的最大速率)


我想知道是什么控制了这里的速率,因为客户端没有向服务器发送任何数据来告诉它任何速率限制。

在TCP中,它是客户端。若服务器的TCP窗口已满,则需要等待来自客户端的更多确认。它隐藏在TCP堆栈中,但TCP引入了保证传递,这也意味着服务器发送数据的速度不能超过客户端处理数据的速度。

在TCP中,它是客户端。若服务器的TCP窗口已满,则需要等待来自客户端的更多确认。它在TCP堆栈中对您隐藏,但TCP引入了保证传递,这也意味着服务器发送数据的速度不能超过客户端处理数据的速度。

TCP具有流量控制,并自动进行。请在网站上阅读


由于流控制而填充管道时,服务器I/O套接字写入操作将不会完成,直到流控制解除。

TCP具有流控制,并自动执行。请在网站上阅读


当由于流量控制而填充管道时,服务器I/O套接字写入操作将在流量控制解除之前完成。

服务器以5.0Mb/s的速度写入数据,但如果您的客户端是此处的瓶颈,则服务器必须等待“发送缓冲区”中的数据完全发送到客户端,或者释放足够的空间来放入更多数据

正如您所说,轻量级客户端能够以5.0Mb/s的速度接收数据,那么您必须检查客户端中的接收后操作。如果您正在接收数据,然后在读取更多数据之前对其进行处理,那么这可能是瓶颈


最好是异步接收数据,一次接收完成后,让客户端套接字再次开始接收数据,同时在单独的线程池线程中处理接收到的数据。通过这种方式,您的客户端始终可以接收输入数据,服务器可以全速发送。

服务器以5.0Mb/s的速度写入数据,但如果您的客户端是这里的瓶颈,则服务器必须等待“发送缓冲区”中的数据完全发送到客户端,或者释放足够的空间来放入更多数据

正如您所说,轻量级客户端能够以5.0Mb/s的速度接收数据,那么您必须检查客户端中的接收后操作。如果您正在接收数据,然后在读取更多数据之前对其进行处理,那么这可能是瓶颈

最好是异步接收数据,一次接收完成后,让客户端套接字再次开始接收数据,同时在单独的线程池线程中处理接收到的数据。通过这种方式,您的客户机始终可以接收输入数据,服务器可以全速发送数据