2012-10-03 32 views
7

Tôi đang xây dựng cặp khách hàng/máy chủ trong C++ và tôi đã sử dụng số winsock để liên lạc. Tuy nhiên, tôi không thể tìm thấy bất kỳ thư viện nào trong C++ mà tôi có thể thực hiện điều gì đó, thay vì gửi yêu cầu trực tiếp từ máy khách đến máy chủ, sẽ lưu trữ yêu cầu và sau đó sẽ liên lạc với máy chủ.Phần mềm trung gian trong giao tiếp giữa máy khách/máy chủ

Có phương pháp hoặc thư viện nào để gửi yêu cầu đến một thứ gì đó như nhà môi giới và ngược lại không? Cái gì đó sẽ lưu trữ các yêu cầu, và sau đó sẽ giao tiếp với máy chủ. Đây là những thư viện tôi đã sử dụng:

#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

Bạn muốn "người môi giới" này làm gì chính xác là gì? Ý nghĩa của mã bạn đã đăng là gì? –

+0

Tôi muốn nhà môi giới này chấp nhận nhiều yêu cầu từ khách hàng và sau đó xếp hàng rồi gửi chúng đến từng máy chủ để xử lý yêu cầu. Tầm quan trọng của mã là tôi đang nói rằng tôi đã sử dụng các thư viện .. tôi muốn biết rằng có bất kỳ thư viện trong c + + cho rằng hoặc tôi có thể làm điều gì đó với winsock. – networks

+5

Có vẻ như bạn có thể đang tìm kiếm thứ gì đó như [zeromq] (http://www.zeromq.org/), tuy nhiên điều đó có thể phức tạp hơn bạn cần. Trong các máy chủ đơn giản, bản thân phần mềm máy chủ sẽ xếp hàng các yêu cầu nội bộ và hành động theo từng cái một nếu nó cần xử lý các yêu cầu một cách nghiêm ngặt theo tuần tự. –

Trả lời

0

Điều bạn cần là viết thư viện của riêng mình để đạt được mục tiêu. Tôi không thấy bất kỳ việc sử dụng thực tế nào của việc có "nhà môi giới" như vậy chỉ đơn thuần là ngăn xếp các yêu cầu và gửi chúng từng cái một và do đó không có sẵn giao dịch nào. Bạn có thể viết một và nó sẽ không phải là một nhiệm vụ khó khăn để làm điều đó nếu bạn thực sự muốn một điều như vậy. Điều này có lẽ nhu cầu cụ thể của ứng dụng của bạn và tôi sẽ làm cho mã WinSock ở trên đủ thông minh để xử lý nó và tránh tìm kiếm/viết thư viện như vậy.

Bạn cũng có thể muốn xem xét thư viện REST HTTP của microsoft aka casablanca và đọc bài đăng blog bên dưới trước khi viết một thư viện như vậy.

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

0

Điều bạn mô tả là xếp hàng đợi thư. Nhìn vào MSMQ (Microsoft Message Queue) hoặc RabbitMQ. Điều này sẽ cho phép ứng dụng khách của bạn gửi yêu cầu tới hàng đợi. Sau đó, (các) máy chủ của bạn sẽ đọc các yêu cầu từ hàng đợi và xử lý chúng khi thích hợp.