2010-02-05 5 views
3

multiplayer card game 먼저 poll() 호출을 사용하여 C에서 non-forking 소켓 서버로 프로그래밍 한 코드가 있습니다.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에서도 실행되기를 바랍니다. Windows에서 작동하지 않는 한 libevent와 같은 비정상적인 라이브러리를 사용하지 않기를 바란다. 미래에 아마 내 서버를 Windows로 포팅 할 수도 있기 때문이다. (왜냐하면 나는 설문 조사에서 다시 전환해야한다고 생각하기 때문이다.)()를 선택하여 Winsock 함수를 거의 추가하지 않습니까?).

Perl과 C 모두를 좋아하고 C++을 존중한다는 점을 말씀 드리 자면,이 질문은 어떤 언어 나 OS가 더 나은지에 관한 것이 아닙니다. 제 질문은 : C++에서 poll()을 사용하는 방법

고마워요! 알렉스

답변

3

기능 readv(), writev()poll() 작업 C++ 정확히 C와 같은 그들을 처리가 C.

+0

이 경우 C 함수와 C++ 함수간에 차이가 없습니다. 그럴 때가 종종 있습니다 (항상 그런 것은 아니지만). 매우 자주 나타납니다. –

3

을로 C++에서 같은 방법은 - 여기 당신에게 started을 얻을 수있는 튜토리얼입니다.

그러나 C++로 작성 했으므로 Boost.Asio 프레임 워크와 같은 강력한 대안을 살펴 보시기 바랍니다. Asio를 사용하여 서버를 구현할 때 많은 시간과 신경을 절약 할 수 있습니다.