使用C ++中的readv(),writev()和poll()

时间:2010-02-05 15:28:10

标签: c++ sockets unix select

我在C中首先将multiplayer card game编程为非分叉套接字服务器(使用poll()调用)。

然后我很难添加新功能,而且我已经切换到Perl(使用IO :: Poll模块)。

由于Perl不支持readv()/ writev(),需要更多的内存/ CPU,也不是很商业化(我想稍后出售我的游戏),我想将我的服务器移回未来的C ++ - 一旦我的功能稳定下来。 (这次是C ++,因为我的服务器中的对象很少)。

有谁可以请给我一个例子,如何在C ++下使用readv(),writev()和poll()或select()?我知道如何在Perl和C下使用它们,但我还没有找到任何C ++的例子。

我的环境:我正在使用OpenBSD及其gcc / g ++,我也希望我的服务器也可以在Linux下运行。我不想使用任何不寻常的库(比如libevent?),除非它们也在Windows下工作 - 因为将来我也想将我的服务器移植到Windows(为此我想我将不得不从调查中切换回来) ()选择()并添加几个Winsock函数?)。

请允许我补充一点,我喜欢Perl和C,我非常尊重C ++,所以这个问题不是关于哪种语言或操作系统更好。我的问题是:如何使用poll()和C ++

谢谢! 亚历

2 个答案:

答案 0 :(得分:3)

函数readv()writev()poll()在C ++中的工作方式与在C中的工作方式相同。

答案 1 :(得分:3)

C ++处理它们与C完全相同 - 这是一个让你started的教程。

但是,由于您是用C ++编写的,我强烈建议您查看强大的替代方案,例如Boost.Asio框架。相信我,使用Asio实现服务器将节省大量时间和精力。

相关问题