我有一个群聊服务器的用例,其中服务器必须向所有客户端的套接字写入一个公共字符串。然后,我通过循环遍历文件描述符列表并将字符串写入每个文件描述符来解决这个问题。
现在我正在考虑寻找更好的解决方案。是否可以通过使用 Linux 中的 tee 系统调用从服务器进行单个函数调用来完成此操作。我希望一个 tee 的输出也传输到下一个 tee 以及客户端套接字。我想知道是否可以将 Tee 一端的文件描述符复制到客户端套接字并获得所需的效果。
请针对您所知道的用例提出任何其他实现。
Thanks
The tee(2) http://linux.die.net/man/2/tee系统调用要求两个文件描述符都是管道 - 因此套接字不计算在内。这splice(2) http://linux.die.net/man/2/splice and vmsplice(2) http://linux.die.net/man/2/vmsplice系统调用似乎也不能满足您的要求,我不知道如何利用sendfile(2) http://linux.die.net/man/2/sendfile either.
我还没有遇到过这样的系统调用。要求收集不同的数据并一次将其全部写入(或者读取时则相反) - 是的。但对于一次写入多个输出 - 不。
所以,你当前的“围绕描述符的循环”已经尽善尽美了,AFAICT。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)