我有使用windsock传输数据的客户端服务器程序,但我需要类似客户端 - 频道 - 服务器,其中通道将从clinet或服务器检索请求将处理它和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 :(得分:2)
如果我了解你,你需要三个程序,连接如下:
+--------+ +-----------+ +--------+ | Client | <---> | "Channel" | <---> | Server | +--------+ +-----------+ +--------+
“频道”程序在服务器和客户端之间充当代理。
为此,您必须创建“频道”程序,以充当服务器和客户端。它以客户端程序连接到服务器而不是实际服务器的方式充当服务器。当“频道”程序收到新的客户端连接时,它本身就作为客户端连接到真实服务器。
然后你必须跟踪套接字是否成对(客户端和服务器连接),以便当你从一个套接字接收输入时,你处理它并将处理过的数据发送到另一个套接字。因此,如果客户端发送数据,您将在“通道”程序中接收数据并执行所需的任何处理,然后将其发送到真实服务器。反之亦然。