【问题标题】:C# - Socket router for passing sockets to multiple socket serversC# - 用于将套接字传递到多个套接字服务器的套接字路由器
【发布时间】:2016-07-20 23:49:12
【问题描述】:

是否有可能有一个套接字路由器将传入的套接字传递到套接字服务器?
我需要这个,因为我想要多台服务器来处理套接字,但只有一个端口供客户端连接。因此,如果其中一台服务器出现故障,路由器会将套接字发送到其他健康的套接字服务器。
这甚至可能吗?如何?或任何其他解决我的问题的方法?

【问题讨论】:

  • 您在寻找负载均衡器吗?
  • @CodeCaster 我更多的是寻找一种将套接字路由到其他服务器的机制,但负载均衡器也可能工作,是否有文章、代码示例或......我可以查看?

标签: c# .net sockets networking


【解决方案1】:

是的,这绝对是可能的,并且被广泛使用。

基本上,您需要在您希望客户端连接的一个端口上运行一台 TCP 服务器。然后你可以监听连接。建立连接后,您可以将数据包重新路由到其他服务器(您选择)。

  1. 用你的主服务器监听一个端口
  2. 接受进来的连接。
  3. 打开连接后,在另一个线程中读取数据。获取该数据并将其发送到您想要的其他服务器。

基本上,它是一个代理。

【讨论】:

  • 好的,但是套接字仍然连接到主服务器,但是将连接路由到另一台服务器不是更好吗?以及我该怎么做,因为似乎没有关于这个主题的任何文章或书籍
  • True 你可以通过告诉客户端连接哪个地址来重新路由连接。事实上,这可能更容易实现。至于文章和书籍,我没有任何建议。我已经为 Minecraft 游戏的基于 java 的代理做了一些工作,但是它未完成并且有点凌乱。尽管如此,如果你想看它,它是here
  • 好的,我会稍微修改一下你的答案,让它成为正确的答案。但只是一个简单的问题,通过告诉客户端哪个地址,您的意思是提供要连接的 IP 和端口?
  • 是的,因为您不需要代理。
猜你喜欢
  • 1970-01-01
  • 2014-03-10
  • 1970-01-01
  • 1970-01-01
  • 2021-08-30
  • 2017-02-25
  • 1970-01-01
  • 2021-12-15
  • 1970-01-01
相关资源
最近更新 更多