你能为p2p socket编程建议最佳实践吗?

时间:2015-03-04 16:31:36

标签: c++ performance sockets

我用C ++编写P2P程序,使程序在多个主机上运行,​​每个主机直接相互连接(即完整图形)。

我的问题是关于在这种情况下处理套接字时我应该考虑的因素。

我需要沟通不是瓶颈,并且有非常好的时间表现。我应该为每个连接使用单独的线程吗?还是某种无限循环?怎么样接受新的联系? (即accept())。无论是Linux还是Windows,Doit都有所不同?我还应该考虑哪些其他事项?

我发现有几个问题涉及我的问题的一部分,但他们并没有完全解决我的问题。 (例如thisthis

1 个答案:

答案 0 :(得分:0)

我建议异步网络用于此类事情,boost::asioQtNetwork就是很好的例子。他们使用系统相关的功能(如epolliocpkqueue和其他)占用0%CPU(而无限循环通常需要100%)。只要正确使用了库,性能就会很好。

我建议您阅读epoll之类的内容,以了解它是如何运作的。

顺便说一句,这种方法可以使用任意数量的线程(甚至是单线程),因此您可以对其进行配置以提高性能。