我在 .Net 中编写了一个相当简单的 SOCKS4/5 代理。它执行以下操作:
TcpListener()
在端口上打开一个- 启动 a
TcpClient()
以处理任何传入连接 - 解析/处理初始标头/请求内容
- 打开一个对应
TcpClient()
远程主机 - 在两个连接之间来回回显数据。
它似乎适用于大多数事情(网页浏览等)。但是,尝试通过代理运行 OpenVPN 时遇到一些奇怪的错误(来自对等方的错误封装数据包长度)。
我的问题 - 使用 TcpClient 是否足以创建 socks 代理?还是我从根本上需要做一些更底层的事情?