如何在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 服务器之间同步的最佳程序

如何使客户端-服务器套接字应用程序以同步的方式访问数据并对其进行测试

如何在c中隐藏公共API中的帮助函数

我如何使用异步套接字在连接的客户端之间切换

转:使用rsync在linux(服务端)与windows(客户端)之间同步

Linux(程序设计):65---同步HTTP请求异步HTTP请求