如何在linux中同步套接字服务器和客户端之间的通信速率
Posted
技术标签:
【中文标题】如何在linux中同步套接字服务器和客户端之间的通信速率【英文标题】:How to sync the rate of communication between socket server and client in linux 【发布时间】:2014-02-20 12:19:39 【问题描述】:我目前正在从事 Linux 网络编程,而且我是新手。我正在用 Linux 网络编程(C 语言)开发一些基于 Stream Socket (TCP) 的客户端-服务器应用程序。
服务器-会不断发送数据 客户- 将持续接收数据 (两者都在 while(1) 循环中运行)
如果 Server.c 在系统 A 上运行并且 client.c 在系统 A 上运行 系统-B。服务器正在发送一些 100 个数据包/秒。 但由于一些 客户端能够接收10个数据包/秒的网络问题。 IE;生产者的生产量超过了接收者的能力。
有丢包吗?还是所有数据包都将被传输,因为它是 TCP 连接(可靠)?
如果有丢包如何开启重传? 任何标志或选项 是否有任何机制或程序来处理生产者-消费者问题? Send() 和 recv() 函数如何工作? (有任何阻塞类型)需要一些帮助! 请。
谢谢大家
【问题讨论】:
【参考方案1】:TCP 有内置的流量控制。您不必在应用程序级别做出任何特殊安排。如果发送方持续发送的数据多于接收方可以吃的数据,TCP 堆栈将减小窗口大小以降低传输速率。效果是 send() 调用阻塞的时间更长。
【讨论】:
丢包怎么办?如何处理?并转发它们? TCP 会为您解决这个问题。以上是关于如何在linux中同步套接字服务器和客户端之间的通信速率的主要内容,如果未能解决你的问题,请参考以下文章
Windows 7 客户端和 Linux 服务器之间同步的最佳程序
如何使客户端-服务器套接字应用程序以同步的方式访问数据并对其进行测试