2012-10-03 14 views
7

Sto costruendo una coppia client/server in C++ e ho utilizzato lo winsock per la comunicazione. Tuttavia, non sono in grado di trovare alcuna libreria in C++ con la quale posso implementare qualcosa che, invece di inviare richieste direttamente dal client al server, memorizzerà la richiesta e in seguito comunicherà con il server.Middleware nella comunicazione client/server

Esiste un metodo o una libreria per inviare la richiesta a qualcosa come un broker e viceversa? Qualcosa che memorizzerà la richiesta e quindi comunicherà con il server. Queste sono le librerie che sto già 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

Che cosa vuoi fare questo "broker" esattamente? Qual è il significato del codice che hai pubblicato? –

+0

Desidero che questo broker accetti più richieste dal client e quindi accodamenti e quindi li invii al server uno alla volta per elaborare la richiesta. Il significato del codice è che sto dicendo che ho usato queste librerie .. voglio sapere che c'è una libreria in C++ per quello o posso fare qualcosa con winsock. – networks

+5

Sembra che tu stia cercando qualcosa come [zeromq] (http://www.zeromq.org/), tuttavia potrebbe essere molto più complesso del necessario. Nei server semplici, il software server stesso accoderà le richieste internamente e agirà su di esse una per una se è necessario elaborare le richieste in modo strettamente sequenziale. –

risposta

0

Ciò di cui hai bisogno è scrivere la tua libreria per raggiungere il tuo obiettivo. Non vedo alcun uso pratico di avere un tale "intermediario" che tratti semplicemente le richieste e le manda una per una e quindi non ne esiste nessuna disponibile commercialmente. Puoi scriverne uno e non sarà difficile farlo se vuoi davvero una cosa del genere. Questa potrebbe essere la tua esigenza specifica dell'applicazione e renderei il tuo codice WinSock sopra abbastanza intelligente da gestirlo ed evitare la ricerca/scrittura di tale libreria.

Si potrebbe anche prendere in considerazione la libreria Microsoft REST HTTP aka casablanca e leggere il post di blog qui sotto prima di scrivere una tale libreria.

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

0

Quello che stai descrivendo è l'accodamento dei messaggi. Esaminare MSMQ (Microsoft Message Queue) o RabbitMQ. Ciò consentirebbe alle tue app client di inviare una richiesta alla coda. Quindi i tuoi server leggeranno le richieste dalla coda e le elaboreranno come appropriato.