본문 바로가기

프로그래밍286

boost::asio 비동기 TCP + echo 서버 / 클라이언트 asio 라이브러리를 이용해 비동기 TCP 서버와 클라이언트를 만들어 봤습니다 예제에 있는거 그대로 이용을 했으니 뭐 특별할건 없고 컴파일 옵션에서 /Mtd 와 클라 소스에서 MY_IP 부분 수정이 필요합니다 # 소스 퍼가실 때 소스 부분을 더블클릭하면 선택 됩니다 드래그 하면 라인 정리가 안되니까 더블클릭으로 선택하고 카피하세요 # 소스에 대한 더 좋은 의견이나 개선사항은 비밀덧글로 주세요 ^^ # 소스 퍼가실 때 한마디 남겨주시면 힘이 됩니다 @_@ 서버 소스 #include "stdafx.h" #include #include #include #include #include #include #include #include #include #include #include #include #include.. 2011. 10. 27.
boost::asio 쓰레드, 타이머, Strand 의 사용법 예제 asio io 를 쓰레드에 태워서 서버용 프로그램을 드래그 하더라도 멈추지 않게끔 된다 쓰레드에서 도는 두개의 타이머와 공유되는 변수를 통해 threadsafe 함을 보이고 strand 로 callback 을 관리하는 것을 볼 수 있다 예제 코드 #include "stdafx.h" #include #include #include class job { private: boost::asio::strand strand_; boost::asio::deadline_timer timer1_; boost::asio::deadline_timer timer2_; int co.. 2011. 10. 27.
boost::asio boost 라이브러리의 한 사이드로 TCP, UDP 의 io 지원을 해준다. 한번쯤 보면 좋을 듯. 웹에서 찾다보면 흔히 볼 수 있는 asio 의 메뉴얼을 번역해놓은 문서다 메뉴얼에는 asio 를 쓰다보면 필히 접게하 되는 자주 쓰이는 스킬과 본격적인 소켓 사용의 방법이 나온다 - 동기/비동기적 타이머 사용 - 인자를 핸들러에 바인딩 - 맴버함수를 핸들러에 바인딩 - 멀티스레드 환경에서 핸들러 동기화 - 동기/비동기적인 TCP/UDP 서버의 예제 - 위 서버에 상응하는 클라이언트 예제 진자 필요한거만 잘도 추려놨다. 이게 뭐야? 하고 한번씩 실행시켜보고 지나갔다 나중에 본격적으로 쓸때 아.. 그게 있어야 되는구나.. 돌이켜보게 된다. 2011. 10. 27.
boost 라이브러리 이미 오래전부터 아는 사람들 사이에서는 좋다고 소문난 라이브러리. vs2008 부터는 아예 표준으로 합류했다 tr1 라이브러리로 boost 라이브러리 설치형으로 다운로드 http://www.boostpro.com/download/ 설치 설명 참고하면 괜찮은 블로그 http://blog.daum.net/aswip/8429308 2011. 10. 27.
boost::lockfree 설치 및 사용법 Lock Free 가 적용된 FIFO, Stack, Ringbuffer(Queue) 를 지원해준다 부스터 설치 폴더에 boost 의 내용 (폴더와 hpp 파일들인데 폴더는 그냥 덮어쓰면 되고 hpp 는 최신 버전인지 비교를 해보고 덮어써야 안전) 과 Libs 를 카피해넣기만 하면 된다. 자세한 사용법이나 내용은 제작자 Tim 씨의 사이트에서 확인! boost::lockfree 다운로드는 아래에~ 자.. 사용법을 보자.. 삭제 자체는 스마트 포인터기 때문에 별도 관리가 없어도 된다 #include struct SData { }; class CMyClass { private: boost::lockfree::fifo m_Fifo; public: void Add(SData temp) { m_Fifo.enqueu.. 2011. 10. 24.
소스코드 인용구 테스트 &lt; < 어떻게 하는걸까요 -_-;;;;;;;;;; 너무 어려운데... http://nnoco.tistory.com/26 를 참조하면 쉬울 듯 int _tmain(int argc, char* argv[]) { try { // io_service를 하나 생성한다. boost::asio::io_service io_service; // 접속 시도 CProtocol Ptc(io_service); boost::thread t(boost::bind(&boost::asio::io_service::run, &io_service)); Ptc.Connect(); boost::thread Recv(boost::bind(&CProtocol::handle_Recive, &Ptc)); boost::thread Send(boost::b.. 2011. 10. 24.