1

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

端口 80 用于服务 HTML 页面,而端口 8081 用于将数据流式传输到客户端。

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

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

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

4

1 回答 1

0

听起来您想为线程而线程。

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

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

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

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

于 2012-10-11T10:14:35.660 回答