【问题标题】:channel for a client server application客户端服务器应用程序的通道
【发布时间】:2012-10-27 02:40:36
【问题描述】:

我有使用 windsock 传输数据的客户端服务器程序,但我需要类似客户端 - 通道 - 服务器之类的东西,其中通道将从客户端检索请求或服务器将处理它,并且 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++ 标准库中的一些东西。

【问题讨论】:

  • 必须从应用程序调用 dll,因为 @JoachimPileborg 解释说,您需要一个单独的应用程序作为通道运行,也就是说在客户端和服务器之间嗅探流量
  • 首先尝试解释一下这个“通道”将位于何处?它是在单独的机器上,还是您希望它与您的客户端程序在同一台机器上工作?

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


【解决方案1】:

如果我理解你,你想要三个程序,连接如下:

+--------+ +------------+ +--------+ |客户 | | 《频道》 | |服务器 | +--------+ +------------+ +--------+

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

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

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

【讨论】:

  • 谢谢,开始吧……一个同时充当客户端和服务器的频道。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多