libevent 예제

 

이제 libevent에 대한 메일링 목록을 사용할 수 있습니다. 리브이벤트는 닉 매튜슨, 아자트 쿠진, 닐스 프로보스가 관리한다. 좋은 예입니다. 감사. 전체 libevent 설명서를 읽었지만 서버에 대한 다중 스레드 설정을 사용하는 방법에 대해 명확하지 않았습니다. 백만 감사합니다. Libevent는 또한 소켓, 필터, 속도 제한, SSL, 제로 카피 파일 전송 및 IOCP를 지원하는 버퍼링된 네트워크 IO에 대한 정교한 프레임워크를 제공합니다. Libevent에는 DNS, HTTP 및 최소 RPC 프레임워크를 비롯한 몇 가지 유용한 프로토콜에 대한 지원이 포함되어 있습니다. 최신 버전의 libevent에는 멀티 스레딩 지원이 내장되어 있다는 것을 알아 차리고 있습니다. 모든 리눅스 배포판하지만 이러한 최신 libevent 버전이 없습니다. 그래서…

내 작은 예의 유용성은 시간이 지남에 따라 감소 할 수있다. 내가 확실히 말할 수있는 것은 적어도 내가 그것을 사용하는 제한된 (그러나 높은 볼륨) 프로젝트에서 나를 위해 작동한다는 것입니다. Libevent는 이벤트를 처리하고 디스패치할 뿐만 아니라 비차단 I/O를 수행하기에 좋은 라이브러리입니다. 이것은 괜찮습니다, 그것은 기본적으로 단일 스레드-즉 여러 CPU 또는 하이퍼 스레딩CPU, 이벤트 펌프 단일에서 실행 되 고 있기 때문에 서버 응용 프로그램에 사용할 수 있는 CPU 리소스를 활용 하 고 정말 활용 하 고 있어 따라서 한 번에 하나의 CPU 코어만 사용할 수 있습니다. 예제 코드 주셔서 감사합니다. 나는 libevent을 배우려고 하고 여전히 완전한 noob입니다. 소스포지 프로젝트 페이지에서 코드를 다운로드할 수 있습니다. Libevent 및 C ++를 사용하여 소켓 서버 및 소켓 클라이언트를 만들고 싶습니다. 그러나 모든 예제에서는 서버 구현을 보여 준다.

누구든지 c ++에서 libevent를 사용하여 소켓 클라이언트를 구현하는 방법을 알고 있습니까? 나는 libevent을 공부하고 있어요. 그리고 그 예는 제가 시작하고자 하는 것이라고 믿습니다. 고마워, 론. 이것은 정말 굉장합니다. 최근에 C에 소켓 서버를 작성해야했습니다. 과거에 나는 자바에서 이러한 일을 많이했습니다, 그리고 C. memcached의 거대한 팬과 열렬한 사용자인, 그리고 memcached의 핵심에 libevent를 사용하는 것을 알고, 나는 이번에 libevent 경로를 이동하기로 결정했다. 그래서 몇 가지 예를 찾았습니다. 나는 cliserver와 에코 서버를 발견, 둘 다 도움이되었다. 그래서, 나는 이벤트를 디스패치하고 나를 위해 비 차단 I / O를 수행하는 작업에 libevent을 넣어하는 방법에 대한 예로이 두 가지를 사용하여 내 서버를 구현에 대해 갔다. 지금까지는 좋았어요. Libevent는 3 절 BSD 라이센스에 따라 출시되었습니다.

공용 git 액세스에 대한 정보입니다. 현재 libevent는 /dev/poll, kqueue(2), 이벤트 포트, POSIX select(2), Windows select(2), 설문 조사(2) 및 설문 조사(4)를 지원합니다. 내부 이벤트 메커니즘은 노출된 이벤트 API와 완전히 독립적이며 libevent의 간단한 업데이트는 응용 프로그램을 다시 디자인할 필요 없이 새로운 기능을 제공할 수 있습니다. 결과적으로 Libevent는 휴대용 응용 프로그램 개발을 허용하고 운영 체제에서 사용할 수 있는 가장 확장가능한 이벤트 알림 메커니즘을 제공합니다. Libevent는 각 event_base를 격리하여 단일 스레드만 액세스하도록 격리하거나 단일 공유 event_base에 대한 잠긴 액세스를 사용하여 다중 스레드 응용 프로그램에 사용할 수도 있습니다. Libevent는 리눅스에서 컴파일해야, * BSD, 맥 OS X, 솔라리스, 윈도우, 그리고 더. 이 예제를 개발한 원래 프로젝트에서 Node.js로 마이그레이션했으며 뒤를 돌아보지 않았습니다. 변경하거나 C/C++와 같이 사용자 고유의 메모리 관리를 수행할 때마다 다시 컴파일할 필요가 없으므로 이벤트 기반 서버 데몬을 개발하는 것이 훨씬 쉽고 빠릅니다. 예를 들어 요청의 일부 매개 변수를 가져와 MySQL을 쿼리한 다음 일부 데이터를 클라이언트에 반환하는 서버가 있다고 가정해 보겠습니다. 헤더, 쿼리에서 반환된 행당 데이터 비트 및 일부 합계를 포함하는 바닥글일 수 있습니다. 비동기 모델을 사용하면 데이터 준비 콜백을 받으면 헤더를 클라이언트로 다시 보낼 때까지 큐에 대기한 다음 MySQL 쿼리를 시작하고 즉시 반환합니다. 행이 MySQL 쿼리에서 돌아오면 쿼리를 시작할 때 제공한 다른 함수로 콜백을 받게 됩니다.