【发布时间】:2018-08-19 02:53:50
【问题描述】:
我已经制作了一个多客户端服务器,它使用 select() 来确定客户端当前正在发送什么。但是,我想发送大于我的缓冲区大小的数据(例如文件中的文本),同时保持非阻塞客户端。
起初我找到了将发送/接收放入while循环以发送数据的解决方案,while循环条件是发送的字节数,但这不会阻塞服务器一段时间吗?尤其是文件内容很大的时候?
我想在我的服务器 while 循环的一次迭代中发送 1024 字节,然后在下一次迭代中将下一个 1024 字节发送到客户端等。尽管这会对客户端产生影响。客户端可能会向服务器请求每个查询的下一个 x 个字节?
请让我知道是否有解决此问题的标准方法。谢谢。
【问题讨论】:
-
基本上,您必须编写自己的状态机才能在所有客户端的交错通信/完成中正确实现文件传输或其他协议。