2013-02-19 46 views
1

所以基本上我正在创建一个在线游戏。我有一台拥有所有用户名/密码信息(登录服务器)的服务器,然后有一台或多台承载游戏的服务器(游戏服务器)。客户端连接到验证其凭据的登录服务器,检查它们所在的游戏服务器,然后告诉该服务器连接到客户端。我可以将TcpClient从一台服务器传递给另一台服务器吗?

我对安全性知之甚少,但我认为让客户端监听来自游戏服务器的连接而不是让游戏服务器监听客户端会更安全。我想这会让DDoS攻击至少更容易预防。

问题是我读过如果你的服务器支持某些类型的路由器或负载均衡器,你将无法轻易获得客户端的IP地址。我需要登录服务器告诉游戏服务器连接到谁......除非我可以传输一个打开的连接。我相信某些游戏具有让客户端在一个或另一个之间浮动的服务器集群,所以我认为可以将连接从一台服务器传递到另一台服务器。这通常如何完成?

也许我走了吗?

+0

我从来没有听说过你能够在两个打开的应用程序之间而不是在两个打开的应用程序之间传输开放的TcpClient。但它可能是可能的... – 2013-02-19 14:40:11

回答

1

您不能像您想象的那样传输连接,您必须告诉客户端创建到新服务器的另一个连接。

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

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 
相关问题