2012-10-03 21 views
7

Estoy construyendo un par cliente/servidor en C++, y he usado el winsock para la comunicación. Sin embargo, no puedo encontrar ninguna biblioteca en C++ mediante la cual pueda implementar algo que, en lugar de enviar solicitudes directamente desde el cliente al servidor, almacenará la solicitud y luego se comunicará con el servidor.Middleware en comunicación cliente/servidor

¿Hay algún método o biblioteca para enviar la solicitud a algo así como un intermediario y viceversa? Algo que almacenará la solicitud y luego se comunicará con el servidor. Estas son las bibliotecas que ya estoy usando:

#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

¿Qué es lo que quiere que haga exactamente este "intermediario"? ¿Cuál es la importancia del código que ha publicado? –

+0

Quiero que este agente acepte varias solicitudes del cliente y que luego haga cola y las envíe al servidor una por una para procesar la solicitud. La importancia del código es que estoy diciendo que he usado estas bibliotecas ... quiero saber si hay alguna biblioteca en C++ para eso o puedo hacer algo con winsock. – networks

+5

Parece que podría estar buscando algo como [zeromq] (http://www.zeromq.org/), sin embargo, puede ser mucho más complejo de lo que necesita. En servidores simples, el software del servidor en sí mismo pondrá en cola las solicitudes internamente y actuará sobre ellas una por una si necesita procesar las solicitudes de forma estrictamente secuencial. –

Respuesta

0

Lo que necesita es escribir su propia biblioteca para lograr su objetivo. No veo ningún uso práctico de tener ese "intermediario" que simplemente acumula las solicitudes y las envía una por una y, por lo tanto, no hay ninguna disponible comercialmente. Puedes escribir uno y no será una tarea difícil hacerlo si realmente quieres algo así. Esta podría ser la necesidad específica de su aplicación y haría que su código WinSock anterior fuera lo suficientemente inteligente como para manejarlo y evitar buscar/escribir una biblioteca de este tipo.

Quizás también desee considerar la biblioteca HTTP REST de Microsoft alias casablanca y lea la publicación de blog siguiente antes de escribir dicha biblioteca.

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

0

Lo que usted describe es la cola de mensajes. Mire en MSMQ (Microsoft Message Queue) o RabbitMQ. Esto permitiría que sus aplicaciones cliente envíen una solicitud a la cola. Luego, su (s) servidor (es) leerán las solicitudes de la cola y las procesarán según corresponda.