客户端服务器应用程序的通道

时间:2012-11-07 04:06:37

标签: c++ sockets network-programming channel socketchannel

我有使用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 ++库。

1 个答案:

答案 0 :(得分:2)

如果我了解你,你需要三个程序,连接如下:

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

“频道”程序在服务器和客户端之间充当代理

为此,您必须创建“频道”程序,以充当服务器客户端。它以客户端程序连接到服务器而不是实际服务器的方式充当服务器。当“频道”程序收到新的客户端连接时,它本身就作为客户端连接到真实服务器。

然后你必须跟踪套接字是否成对(客户端和服务器连接),以便当你从一个套接字接收输入时,你处理它并将处理过的数据发送到另一个套接字。因此,如果客户端发送数据,您将在“通道”程序中接收数据并执行所需的任何处理,然后将其发送到真实服务器。反之亦然。