我应该如何在C++中实现对等网络

How should I implement peer-to-peer networking in C++?

本文关键字:实现 对等 网络 C++ 我应该      更新时间:2023-10-16

我以前用C实现过服务器/客户端网络程序,但从未用C++进行过对等程序或任何套接字编程。

对于对等,我想我必须创建多个线程并管理传入和传出连接,因为每个程序都将像客户端和服务器一样同时工作,对吧?

在C++中实现这一点的好方法是什么?我认为C++本身并不支持线程。。。

您不需要使用多个线程。另一种选择是使用单个线程,并使用select(((或poll((或epoll((等(多路复用套接字。

您可能想了解boost.asio库,它适用于多个套接字连接(无论是线程连接还是非线程连接…(

任何在C中有效的代码在C++中也是有效的。因此,您可以在那里使用相同的套接字API和相同的线程API(但Boost包装器可能确实更方便(。

此外,C++将在今年年底的某个时候原生地支持线程(该标准已经编写完成,预计将在今年晚些时候由ISO投票决定(。当然,显示在编译器/stdlibc++中可能需要一些时间(但gcc/gnu stdlibc++已经实现了它,除了对线程本地存储的语言支持(它确实支持,但使用了较旧的编译器特定方式((。对于不支持它的编译器,boost版本基本上与所提出的标准兼容。