首页 文章

使用Async套接字为TCP代理服务器实现线程

提问于
浏览
1

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

端口80用于服务HTML页面,其中端口8081用于将数据流传输到客户端 .

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

我使用Async编程模型(BeginXX和EndXX)实现了代理 . 代理工作正常 . 将10个客户端连接到此代理时没有问题 .

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

1 回答

  • 0

    这听起来像是你想要线程的线程 .

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

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

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

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

相关问题