2010-02-05 3 views
3

Il y a un multiplayer card game que j'avais d'abord programmé comme serveur de socket non-forking dans C (en utilisant l'appel poll()).Utilisation de readv(), writev() et poll() à partir de C++

Ensuite, c'était trop difficile pour moi d'ajouter de nouvelles fonctionnalités et je suis passé à Perl (en utilisant le module IO :: Poll). Comme Perl ne supporte pas readv()/writev(), nécessite plus de mémoire/CPU et n'est pas non plus très commercial (je souhaite vendre mon jeu plus tard), je voudrais retourner mon serveur à C++ à l'avenir - une fois que mes fonctionnalités se stabiliseront. (C++ cette fois car il y a peu d'objets sur mon serveur).

Quelqu'un pourrait-il me fournir un exemple, comment utiliser readv(), writev() et poll() ou select() sous C++? Je sais comment utiliser ceux sous Perl et C, mais je n'ai pas encore trouvé d'exemples pour C++.

Mon environnement: J'utilise OpenBSD avec son gcc/g ++ et j'aimerais que mon serveur fonctionne aussi sous Linux. Je préfèrerais ne pas utiliser de librairies inhabituelles (comme libevent?) À moins qu'elles ne fonctionnent sous Windows aussi - parce que peut-être à l'avenir je veux aussi porter mon serveur sur Windows (pour cela je pense que je devrai revenir du sondage() pour sélectionner() et ajouter quelques fonctions Winsock?). S'il vous plaît permettez-moi d'ajouter que j'aime Perl et C et je respecte beaucoup C++, donc cette question ne concerne pas la langue ou le système d'exploitation est mieux. Ma question est: comment utiliser poll() avec C++

Merci! Alex

Répondre

3

Les fonctions readv(), writev() et poll() fonctionnent de la même façon en C++ comme ils le font en C.

+0

Il n'y a aucune différence entre les fonctions C et les fonctions C++ dans ce cas. Vous trouverez souvent que c'est le cas (pas toujours) mais très souvent. –

3

C++ les poignées exactement les mêmes que C - Voici un tutoriel pour vous aider à started.

Cependant, puisque vous l'écrivez en C++, je vous conseille fortement de jeter un oeil aux alternatives puissantes, comme le framework Boost.Asio. Croyez-moi, vous économiserez beaucoup de temps et d'énergie dans la mise en place d'un serveur utilisant Asio.

Questions connexes