您好我正在尝试创建各种代理服务器 .
目标是让一个客户端(开始)连接到套接字服务器,然后将套接字服务器中继字节用于另一个服务器的字节 . 最初的概念只是一个中间人 . 我搜索并从MSDN中找到代码来创建套接字服务器,并将数据发送回客户端以及新连接 . 我在创建一个只会来回切换的服务器时遇到了麻烦,但仍在监听新的连接 .
任何提示或方向都会有所帮助 .
这篇文章是我最接近我想做的:Is it possible to 'relay' a socket?
客户端 - > MYSERVER - >目的地(和反向)
客户端应该能够在不修改的情况下与目标进行通信,只需将我的服务器放在中间即可 .
谢谢!
更新:我有一个套接字服务器,读取线上的所有字节 . 然后,我需要将这些字节复制到新的套接字并中继所接收的字节 .
2 回答
我不明白这是什么问题......只需创建服务器类使用Socket.AcceptAsync来接受套接字 . 为每个接受的套接字创建Session类 . 在会话类中使用Socket.ConnectAsync连接到Destination . Build 连接后,开始使用Socket.ReceiveAsync从两个套接字读取数据 . 收到数据后,将其写入对面的套接字 . 为了简化方法,您可以使用NetworkStream - 因为不保证Socket SendAsync / Send发送整个数据,而NetworkStream BeginWrite / Write是 .
此外,如果不需要性能,您可以使用提交xxxAsync的接受/连接/接收方法 .
也许我们可以使用像DeleGate这样的现有库 . 我们在我们的系统中实现了这一点 . 您可以将其安装为Windows服务 .