我该如何在C ++中实现点对点网络?

时间:2011-07-04 11:41:30

标签: c++ sockets

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

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

在C ++中实现它的好方法是什么?我相信C ++本身不支持线程......

3 个答案:

答案 0 :(得分:1)

您可能需要查看适用于多个套接字连接的boost.asio库(有线或无线...)

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

此外,C ++本身将在今年年底的某个时候支持线程化(该标准已经编写并预计将在今年晚些时候由ISO投票)。当然,在编译器/ stdlibc ++中可能需要一些时间才能显示(但gcc / gnu stdlibc ++已经实现了它,除了对线程局部存储的语言支持(它支持它,但使用较旧的编译器特定方式))。对于不支持它的编译器,升级版本大多与提议的标准兼容。