我应该如何在C++中实现对等网络
How should I implement peer-to-peer networking in C++?
我以前用C实现过服务器/客户端网络程序,但从未用C++进行过对等程序或任何套接字编程。
对于对等,我想我必须创建多个线程并管理传入和传出连接,因为每个程序都将像客户端和服务器一样同时工作,对吧?
在C++中实现这一点的好方法是什么?我认为C++本身并不支持线程。。。
您不需要使用多个线程。另一种选择是使用单个线程,并使用select(((或poll((或epoll((等(多路复用套接字。
您可能想了解boost.asio库,它适用于多个套接字连接(无论是线程连接还是非线程连接…(
任何在C中有效的代码在C++中也是有效的。因此,您可以在那里使用相同的套接字API和相同的线程API(但Boost包装器可能确实更方便(。
此外,C++将在今年年底的某个时候原生地支持线程(该标准已经编写完成,预计将在今年晚些时候由ISO投票决定(。当然,显示在编译器/stdlibc++中可能需要一些时间(但gcc/gnu stdlibc++已经实现了它,除了对线程本地存储的语言支持(它确实支持,但使用了较旧的编译器特定方式((。对于不支持它的编译器,boost版本基本上与所提出的标准兼容。
相关文章:
- 如果没有malloc,链表实现将失败
- 如何在c++中实现处理器调度模拟器
- 如何在c++中使用引用实现类似python的行为
- 实现无开销push_back的最佳方法是什么
- 使用简单类型列表实现的指数编译时间.为什么
- 如何在BST的这个简单递归实现中消除警告
- 实现一个在集合上迭代的模板函数
- 我应该实现右值推送功能吗?我应该使用std::move吗
- 如何正确实现和访问运算符的各种自定义枚举器
- C++Union/Struct位域的实现和可移植性
- 这个极客对极客的trie实现是否存在内存泄漏问题
- 在c++中实现LinkedList时,应出现未处理的错误
- 为左值和右值的包装器实现C++范围
- 使用模板进行堆栈实现; "name followed by :: must be a class or namespace"
- 使用GSoap实现ONVIF
- 在用于格式4的arm模拟器中实现功能时的一个问题
- 用于AVX的ln(x)的实现,m256
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 在C++中,如何在类和函数(可能是模板化的)的头中编写完整的实现
- 我应该如何在C++中实现对等网络