UDP服务器可以同时处理客户端的实际限制吗?

时间:2013-04-09 16:13:56

标签: sockets udp

我的游戏需要一个大厅,玩家将在这里被分配一个专用/独立的服务器,然后他们将真正玩游戏。这个大厅相当简单,唯一的操作是Login,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();
        }
    }
}

0 个答案:

没有答案