使用异步套接字实现 TCP 代理服务器的线程



>我有一个自定义的TCP代理服务器在端口5888(虚拟端口)上监听。代理服务器侦听传入连接。当代理收到某些页面的 HTTP 请求时,它应将其中继到端口 80 上的主服务器。对于其他页面请求,代理需要将数据发送到端口 8081 上的主服务器。

端口 80 用于为 HTML 页面提供服务,其中端口 8081 用于将数据流式传输到客户端。

Client --> Proxy(TCP Proxy Server) --> MainServer
Client <-- Proxy(TCP Proxy Server) <-- MainServer

我已经使用异步编程模型(BeginXX和EndXX)实现了代理。代理工作正常。我将大约 10 个客户端连接到此代理没有问题。

现在我想在代理中实现线程化,以便我可以同时有 300 多个客户端连接到代理。考虑到异步编程模型(异步套接字),实现此线程的最佳方法是什么。

听起来你想要线程是为了线程。

添加额外的线程究竟可以解决什么问题?

鉴于异步模型回调到 ThreadPool 中,您已经免费获得了"线程化"。你为什么想要更多?

您可以在读取操作的异步回调中愉快地从一个流复制到另一个流。如果你也使用异步进行写入,它不会给 ThreadPool 带来任何重大负担,IMO 工作最好留在那里。

您是否考虑过为此使用 async/await?如果这是一个选项,它将使您的代码在大脑上的嵌套量减轻了几度。

最新更新