我以前在C中实现过服务器/客户端网络程序,但我从来没有用C ++进行过点对点程序或任何套接字编程。
对于点对点,我想我必须创建多个线程并管理传入和传出连接,因为每个程序将同时像客户端和服务器一样工作,对吗?
在C ++中实现它的好方法是什么?我相信C ++本身不支持线程......
答案 0 :(得分:1)
您可能需要查看适用于多个套接字连接的boost.asio库(有线或无线...)
答案 1 :(得分:1)
您不需要使用多个线程。另一种方法是使用单个线程,并使用select()(或poll()或epoll()等多路复用套接字。)
答案 2 :(得分:0)
任何在C中有效的代码在C ++中也是有效的。所以你可以在那里使用相同的套接字API和相同的线程API(但Boost包装器可能确实更方便)。
此外,C ++本身将在今年年底的某个时候支持线程化(该标准已经编写并预计将在今年晚些时候由ISO投票)。当然,在编译器/ stdlibc ++中可能需要一些时间才能显示(但gcc / gnu stdlibc ++已经实现了它,除了对线程局部存储的语言支持(它支持它,但使用较旧的编译器特定方式))。对于不支持它的编译器,升级版本大多与提议的标准兼容。