3

我的游戏需要一个玩家聚集的大厅,然后再分配一个专用/单独的服务器,他们将在其中实际玩游戏。这个大厅相当琐碎,唯一的操作是登录、Ping、StartGame。服务器只需要保留有关客户端的基本信息,他是否登录,而不需要保留太多其他资源。

我用一个简单的 TCP 服务器做了一些测试,在开销得到我之前,我最多可以支持大约 10000 个连接。因此,为了支持 100000 名玩家,我需要部署一个服务器场,至少 10 台机器,并在服务器之间添加同步......

我正在研究使用 UDP 做同样的事情的可能性。我不担心 UDP 的无连接或不可靠的性质,我理解这一点,并且有大量的 UDP 与 TCP 文章。我的问题本质上是实用的/建筑的。在上述场景中,实际限制是多少,单个 UDP 服务器每秒可以处理多少个数据包?期望 UDP 服务器每秒可以处理 100000 个数据包是否现实?哪台机器?Amazon EC2 可以提供的任何东西。

任何见解或进一步阅读将不胜感激。

编辑:评论表明我可以获得无限(100000+)个 TCP 连接......我一定遗漏了一些东西,但是,任何人都可以让下面的代码达到 100000 个连接。

public class Server
{
    public static void main(String[] args)
    {
        System.out.println("Listening...");
        try
        {
            ServerSocket ss = new ServerSocket(22222);

            ArrayList<Socket> sockets = new ArrayList<Socket>();

            while (true)
            {
                sockets.add(ss.accept());
                if (sockets.size() % 100 == 0)
                {
                    System.out.println(String.format("Received %d connections.", sockets.size()));
                }
            }
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }
}

public class Client
{
    public static void main(String[] args)
    {
        ArrayList<Socket> sockets = new ArrayList<Socket>();

        try
        {
            while (true)
            {
                sockets.add(new Socket("localhost", 22222));
            }
        }
        catch (UnknownHostException e)
        {
            e.printStackTrace();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }
}
4

0 回答 0