2012-10-03 2 views
7

저는 C++로 클라이언트/서버 쌍을 구축하고 있으며 통신을 위해 winsock을 사용했습니다. 그러나 C++에서 클라이언트에서 서버로 직접 요청을 보내는 대신 요청을 저장하고 나중에 서버와 통신하는 기능을 구현할 수있는 라이브러리를 찾을 수 없습니다.클라이언트/서버 통신의 미들웨어

브로커와 같은 것으로 요청을 보내는 방법이나 라이브러리가 있습니까? 요청을 저장하고 서버와 통신합니다. 이미 사용중인 라이브러리는 다음과 같습니다.

#pragma comment(linker, "/defaultlib:ws2_32.lib") 
#include <WinSock2.h> 
#include <winsock.h> 
#include <stdio.h> 
#include <iostream> 
#include <string.h> 
#include <windows.h> 
#include <ws2tcpip.h> 
#include <fstream> 
using namespace std; 

#define HOSTNAME_LENGTH 20 
#define RESP_LENGTH 40 
#define FILENAME_LENGTH 20 
#define REQUEST_PORT 5001 
#define BUFFER_LENGTH 1024 
#define TRACE 0 
#define MSGHDRSIZE 8 //Message Header Size 
+0

"브로커"가 정확히 원하는 것은 무엇입니까? 게시 한 코드의 의미는 무엇입니까? –

+0

이 브로커가 클라이언트의 여러 요청을 수락하고 대기열에 넣고 요청을 처리하기 위해 하나씩 서버로 보냅니다. 코드의 중요성은 내가이 라이브러리를 사용했다는 것을 말하고 있다는 것입니다. 그 라이브러리에 C++의 라이브러리가 있는지 또는 winsock으로 무엇인가 할 수 있는지 알고 싶습니다. – networks

+5

[zeromq] (http://www.zeromq.org/)와 같은 것을 찾는 것처럼 들리 겠지만, 필요한 것보다 훨씬 더 복잡 할 수도 있습니다. 단순한 서버에서 서버 소프트웨어 자체는 요청을 내부적으로 대기열에 넣고 요청을 엄격하게 순차적으로 처리해야하는 경우 하나씩 처리합니다. –

답변

0

목표를 달성하기 위해 필요한 라이브러리를 직접 작성해야합니다. 나는 단순히 요청을 쌓아서 하나씩 보내어 상업적으로 이용할 수있는 것이 전혀없는 그러한 "중개인"을 갖는 실용적인 사용법을 보지 못합니다. 당신은 하나를 쓸 수 있고, 정말로 그런 것을 원한다면 그것을하는 것은 어려운 일이 아닙니다. 이것은 아마도 여러분의 어플리케이션에 특정한 필요성을 요구하며, 위의 WinSock 코드를 처리하고 그러한 라이브러리를 검색/작성하는 것을 피할만큼 지능적인 코드를 만들 것입니다.

또한이 라이브러리를 작성하기 전에 microsoft REST HTTP 라이브러리 인 casablanca를 고려하고 아래 블로그 게시물을 읽어보십시오.

http://blogs.msdn.com/b/vcblog/archive/2013/07/10/intercepting-http-request_2f00_response-using-c_2b002b00_-rest-http-library.aspx

0

당신은 무엇을 묘사하는 메시지 대기열입니다. MSMQ (Microsoft Message Queue) 또는 RabbitMQ를 살펴보십시오. 이렇게하면 클라이언트 응용 프로그램이 요청을 대기열로 보낼 수 있습니다. 그런 다음 서버가 대기열에서 요청을 읽고 적절하게 처리합니다.