我正在为P2p文件共享实现bit torrent。让我们说,同时共享的100个对等体中的最大值。 TCP连接在每个对等体之间建立到每个其他对等体。最初,One peer拥有整个文件,它开始共享片段,随后所有同伴共享他们的片段。
通常,件大小为50kB - 1MB。我想知道,在C语言中编写此类应用程序的最佳方法是什么。使用epoll或libevent的线程?
任何人都可以给出不同可能方法的肯定/否定吗?
答案 0 :(得分:1)
如果我们在任何特定时刻只讨论100个对等连接,那么在一组TCP套接字上使用select或poll的传统方法就可以正常工作。
EPoll有助于解决何时需要扩展到数千个长时间运行的连接的问题。请阅读C10K problem上的文档了解更多详情。
我听说过有关自由的好事。我相信它是epoll和其他套接字函数之上的抽象,提供了一些不错的东西。如果它使您的编程更容易,那么一定要使用它。但是你可能不需要它来表现。
答案 1 :(得分:0)
Libevent
本质上是epoll
的包装器,主要用于编写好的可移植代码。由于它是一个包装器,epoll
的缺点将被保留,并且从性能角度来看不会增加太多。如果不考虑可移植性,epoll
应该可以正常工作。更好的是,如果音量大大低于仍然使用poll
。