2012-10-03 30 views
7

Buduję parę klient/serwer w C++, a do komunikacji używam winsock. Jednak nie jestem w stanie znaleźć żadnej biblioteki w C++, dzięki której mogę zaimplementować coś, co zamiast wysyłać żądania bezpośrednio od klienta do serwera, będzie przechowywać żądanie, a następnie komunikować się z serwerem.Oprogramowanie pośrednie w komunikacji klient/serwer

Czy istnieje jakaś metoda lub biblioteka do wysłania żądania do czegoś takiego jak broker i na odwrót? Coś, co zapamiętuje żądanie, a następnie komunikuje się z serwerem. Są to biblioteki, których już używam:

#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

Co dokładnie chcesz zrobić z tym "brokerem"? Jakie jest znaczenie kodu, który opublikowałeś? –

+0

Chcę, aby ten broker akceptował wiele żądań od klienta, a następnie w kolejce i wysyłał je do serwera jeden po drugim, aby przetworzyć żądanie. Znaczenie kodu polega na tym, że mówię, że użyłem tych bibliotek. Chciałbym wiedzieć, że jest tam jakaś biblioteka w C++, albo mogę coś zrobić z winsockiem. – networks

+5

Wygląda na to, że szukasz czegoś podobnego do [zeromq] (http://www.zeromq.org/), ale może to być znacznie bardziej skomplikowane, niż potrzebujesz. W prostych serwerach samo oprogramowanie serwera będzie wewnętrznie kolejkowało żądania i działać na nie jeden po drugim, jeśli musi przetwarzać żądania ściśle sekwencyjnie. –

Odpowiedz

0

Musisz napisać własną bibliotekę, aby osiągnąć swój cel. Nie widzę żadnego praktycznego zastosowania posiadania takiego "pośrednika", który jedynie upraszcza żądania i wysyła je jeden po drugim, a zatem nie ma żadnego dostępnego na rynku. Możesz napisać jeden i nie będzie to trudne zadanie, jeśli naprawdę chcesz coś takiego. Może to twoja specyficzna potrzeba aplikacji i sprawiłbym, że twój kod WinSock byłby wystarczająco inteligentny, by go obsłużyć i uniknąć szukania/pisania takiej biblioteki.

Możesz również wziąć pod uwagę bibliotekę HTTP REST HTTP aka casablanca i przeczytać poniższy blog przed napisaniem takiej biblioteki.

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

0

co opisujesz jest kolejkowania wiadomości. Zajrzyj do MSMQ (Microsoft Message Queue) lub RabbitMQ. Dzięki temu aplikacje klienckie mogą wysyłać żądania do kolejki. Następnie twoje serwery odczytują żądania z kolejki i przetwarzają je odpowiednio.