我正在尝试在 C 中实现代理服务器和代理客户端(分别是!)。所以在这个场景中,我们有一个客户端、一个代理客户端、一个代理服务器和一个服务器。
代理客户端接受来自客户端的对特定主机(服务器)和端口号的请求,并为该特定主机/端口对与代理服务器打开单个连接。
这种连接是持久的。如果对同一主机/端口组合有更多请求,则必须通过同一连接发送。请求在每个连接中都用 id 的 0,1,... 编号,以区分一个。
对于从代理客户端收到的每个请求(不是连接。每个连接可能有多个请求。),代理服务器为每个请求打开到目标服务器的连接。
但是,需要限制可以打开到目标服务器的连接数。我想知道如何实现这个限制。
假设我指定可以打开到 h1 目标服务器的最大连接数为 2。如果第三个连接来自客户端代理,服务器代理应该做什么?
如果已经有 2 个到目标服务器的打开连接,我应该实现某种队列来存储传入请求吗?
如果是,那么是否应该为单独的主机/端口组合设置单独的队列?以及如何在 C 中实现这样的结构?
我现在感到难以置信的失落。非常感谢这里的一些指导。PS我正在使用套接字在C中编码。