2012-11-07 38 views
0

我有使用風向袋的數據傳輸客戶端服務器程序,但我需要像一個客戶 - 渠道 - 服務器在哪個通道將檢索從客戶爲例或服務器的請求將處理它和ID在該時間通道很忙,它會將該請求存儲在隊列中。我希望將頻道作爲單獨的應用程序。我有一點點的想法這個喜歡:通道的客戶端服務器應用程序

class ch { 

void getdata{ 
//to recieve data 
} 

void putdata{ 
//to send data 
} 

void queue{ 
//to store if channel is busy now 
} 

private: 
void dataaddress; 
double datasize; 

} 

我想使得它作爲一個不同的應用程序或一個DLL文件,但我不知道如何做到這一點與DLL文件等,如果我帶插座做它會像客戶端或服務器一樣。那麼有沒有更好的方法來做或者開始?我知道關於boost:asio和其他庫,但我需要在標準C++庫中的東西。

+0

一個DLL必須從應用程序調用AS @JoachimPileborg解釋說,你需要一個單獨的應用程序作爲一個通道運行,這將是嗅探客戶端和服務器之間的流量 – fayyazkl

+0

首先嚐試解釋這個「通道」的位置位於?它會在單獨的機器上,還是希望它在與客戶機程序相同的機器上工作? – codewarrior

回答

2

如果我理解你,你想三個程序,連接如下:

 
+--------+  +-----------+  +--------+ 
| Client | <---> | "Channel" | <---> | Server | 
+--------+  +-----------+  +--------+ 

的「通道」程序充當服務器和客戶端之間的代理

爲此,您必須創建「通道」程序以充當服務器客戶端。它以客戶端程序連接到服務器的方式充當服務器,而不是實際的服務器。當「頻道」程序收到一個新的客戶端連接時,它就像一個客戶端一樣連接到真實的服務器。

然後,你必須保持跟蹤,如果插座對(客戶端和服務器連接),這樣,當你從一個插口接收輸入,你處理它,併發送到其它插座處理過的數據。因此,如果客戶端發送數據,您將在「頻道」程序中接收數據,並執行所需的處理,然後將其發送到真實服務器。反過來也是如此。

+0

非常感謝您開始......一個充當客戶端和服務器的通道。 – networks

相關問題