我可以将TcpClient从一台服务器传递到另一台服务器吗?

时间:2013-02-19 14:32:50

标签: c# networking tcp mmo

所以基本上我正在创建一个在线游戏。我有一台服务器,其中包含所有用户名/密码信息(登录服务器),然后是一台或多台托管游戏的服务器(游戏服务器)。客户端连接到验证其凭据的登录服务器,检查它们所在的游戏服务器,然后告诉该服务器连接到客户端。

我对安全性知之甚少,但我认为让客户端从其游戏服务器监听连接而不是让游戏服务器监听客户端会更安全。我认为这至少会使DDoS攻击更容易被阻止。

问题是我已经读过,如果您的服务器落后于某些类型的路由器或负载平衡器,您将无法轻松获取客户端的IP。我需要为登录服务器告诉游戏服务器谁要连接...除非我只能传输一个打开的连接。我相信某些游戏有服务器集群,让客户端在一个或另一个之间浮动,所以我想到某种方式可以将连接从一个服务器传递到另一个服务器。一般情况如何?

也许我离开了?

2 个答案:

答案 0 :(得分:2)

为了避免DDoS,一个可能的解决方案是让login server连接到game server并要求它打开一个端口,然后game server可以返回随后port number login server然后可以发送到client

client然后让我们说一分钟的窗口连接到它的随机分配的端口,然后game server可以关闭该端口。

只是一个想法。

Client connects to Login Server:Standard Port
Login Server connects to Game Server:Standard Port
Game Server sends Random Port to Login Server
Login Server sends Random Port to Client
Client connects to Game Server:Random Port

答案 1 :(得分:1)

您无法像您想象的那样传输连接,您基本上必须告诉客户端创建与新服务器的另一个连接。

您可以使用某种传输命令响应客户端,该命令指出您希望它们连接到的新游戏服务器IP和端口。它可以连接到新服务器并与现有服务器断开连接。