2010-02-05 27 views
3

有一個multiplayer card game我首先編程爲C中的非分支套接字服務器(使用poll()調用)。從C++使用readv(),writev()和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(爲此,我想我必須從poll ()選擇()並添加幾個Winsock函數?)。

請讓我補充一點,我喜歡Perl和C,我非常尊重C++,所以這個問題不是關於哪種語言或操作系統更好。我的問題是:如何使用poll()與C++

謝謝! 亞歷

回答

3

功能readv()writev()poll()工作在C++,因爲他們在C.

+0

在這種情況下,C函數和C++函數之間沒有任何區別。你會經常發現這種情況(並非總是),但經常發生。 – 2010-02-05 15:37:25

3

以同樣的方式C++處理它們完全一樣爲C - 這裏有一個教程,讓你started。但是,由於您是用C++編寫的,因此我強烈建議您查看功能強大的替代方案,如Boost.Asio框架。相信我,在使用Asio實現服務器時,您將節省大量時間和精力。