将数据中继到一个或多个客户端的套接字服务器。 C#

发布于 2024-12-17 03:35:42 字数 481 浏览 1 评论 0原文

您好,我正在尝试创建某种代理服务器。
目标是让一个客户端(启动)连接到套接字服务器,然后让套接字服务器将字节逐字节中继到另一台服务器。最初的概念只是一个中间人。我从 MSDN 中搜索并找到了创建套接字服务器的代码,并将数据发送回客户端以及新的连接。我在创建一个仅来回中继但仍在侦听新连接的服务器时遇到问题。

任何提示或方向都会有帮助。

这篇文章最接近我想做的事情: 是否可以“中继”套接字?

客户端 --> ;我的服务器 -->目的地(和反向)

客户端应该能够在不进行修改的情况下与目的地进行通信,只需将我的服务器放在中间。

谢谢!

更新: 我确实有一个套接字服务器,可以读取线路上的所有字节。然后,我需要将这些字节复制到新的套接字并转发收到的字节。

Hello I am trying to create a proxy server of sorts.
The goal is to have one client (to start) connect to the socket server, then have the socket server relay byte for byte to another server. The initial concept would be just a middleman. I have searched and found code from MSDN to create a socket server, and send data back to the client as well as a new connection. I have having trouble creating a server that will just relay back and forth, but still be listening for new connections.

Any tips or direction would help.

This article was the closest to what I am trying to do:
Is it possible to 'relay' a socket?

Client --> MYSERVER --> Destination (And reverse)

Client should be able to communicate to the destination without modification, just with my server in the middle.

Thanks!

Update:
I do have a socket server that reads all bytes on the wire. I then need to copy those bytes to a new socket and relay back the bytes received.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

就此别过 2024-12-24 03:35:42

我不明白有什么问题......只需创建服务器类,使用 Socket.AcceptAsync 来接受套接字。为每个接受的套接字创建 Session 类。在会话类中,使用 Socket.ConnectAsync 连接到目标。连接建立后,开始使用 Socket.ReceiveAsync 从两个套接字读取数据。收到数据后,您将其写入相反的套接字。对于更简单的方法,您可以使用 NetworkStream - 因为 Socket SendAsync/Send 不能保证发送整个数据,而 NetworkStream BeginWrite/Write 可以。

另外,如果不需要性能,您可以使用 Accept/Connect/Receive 方法插入 xxxAsync。

I dont see what's the problem ... . Just create server class use Socket.AcceptAsync to accept sockets. For each accepted socket create Session class. In session class connect to Destination with Socket.ConnectAsync. After connection established start reading data from both sockets with Socket.ReceiveAsync. Once data received you write it to opposite socket. For simplier approach you can use NetworkStream - Because Socket SendAsync/Send is not quaranteed to send whole data, while NetworkStream BeginWrite/Write is.

Also if no performance needed, you can use Accept/Connect/Receive methods insted xxxAsync.

瘫痪情歌 2024-12-24 03:35:42

也许我们可以使用现有的库,例如 DeleGate。我们已经在我们的系统中实现了这一点。您可以将其安装为 Windows 服务。

Maybe we can use the existing library like DeleGate. We have implemented this in our system. You can install it as a Windows Services.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文