当前位置: 首页 > 知识库问答 >
问题:

限制ServerSocket的连接数

杨乐
2023-03-14

我是网络新手,我正在尝试制作一个用于聊天的小型java应用程序。我想要的是ServerSocket接受一个并且只有一个连接。如果第二个Socket尝试连接到ServerSocket,它将引发异常,以便启动套接字的用户知道他无法连接到那个ServerSocket我查看了javadoc并找到了那个构造函数。

public ServerSocket(int port, int backlog) throws IOException

创建服务器套接字并将其绑定到指定的本地端口号和指定的积压工作。端口号为0表示自动分配端口号,通常从临时端口范围分配。然后可以通过调用getLocalPort来检索此端口号。

我试了这个

class Service implements Runnable {
    private Socket maChaussette;

    Service(Socket s) {
        maChaussette = s;
    }

    public void run() {
        System.out.println("connection established");
        while (true) {
            System.out.print("");
        }
        //maChaussette.close();
    }
}

服务器:

class Serv {
    public static void main(String[] a) throws IOException {
        ServerSocket socketAttente;
        socketAttente = new ServerSocket(11111, 1);
        boolean conn = false;
        Thread t;
        while (true) {
            Socket s = socketAttente.accept();
            t = new Thread(new Service(s));
            t.start();
        }
        //socketAttente.close();
    }
}

客户

public class Cll {
    public static final int PORT = 11111;

    public static void main(String[] arguments) {
        try {
            Socket service = new Socket("localhost", PORT);
            while (true) {
                System.out.print("");
            }
        } catch (Exception e) {
            System.err.println("Error");
            e.printStackTrace();
            System.exit(1);
        }
    }
}

我没有尝试通信或其他什么,我只是创建这些类来尝试阻止与ServerSocket的连接数。

但是,如果我运行两个Cll程序,我会得到两次消息“连接已建立”。

有人知道如何继续限制ServerSocket上的连接吗?

共有1个答案

井誉
2023-03-14

只需在接受一个连接后关闭ServerSocket。并去掉accept循环周围的“while(true)”。

 类似资料:
  • 问题内容: 我正在使用套接字运行一些测试,但遇到了一些奇怪的行为:ServerSocket将在第50个客户端套接字连接到它之后拒绝连接,即使该客户端套接字在打开下一个套接字之前就已关闭,即使延迟了在连接之间添加。 以下程序是我的实验代码,该代码在当前状态下不引发任何异常并正常终止。但是,如果将的阵列大小增加到50以上,则服务器套接字将拒绝在第50个连接后尝试连接的任何客户端套接字。 问题: 为什么

  • 是否可以使用OkHttpClient限制活动连接的数量?所以,如果达到限制,就不会选择和建立新的连接? 我的应用程序同时启动多个连接。

  • 使用带有socket.io的nodejs服务器和客户机,我可以让14K个客户机进行连接。即使在使用集群时也略少。 CPU和RAM都没有耗尽。除了socket.io自己执行的自动ping之外,不会传输任何数据。 如果机器不够强大,我可以理解。但是,我希望服务器无论如何都会随机删除客户端,而不是每次尝试时都保持特定的数量。 编辑:这是在Windows上使用网络Storm,我会在Linux机器上测试,当

  • 是否有任何方法可以限制Apache Camel RabbitMQ系统与RabbitMQ服务器的连接数。默认情况下,它似乎为每个骆驼消费者/生产者创建了一个连接。

  • 限制用户账户的同时使用 Isaac是一家无线互联网服务提供商(WISP),他的收入取决于拥有尽可能多的用户,因为他每月收费。 爱丽丝是他的客户。 她给住在隔壁的鲍勃提供了她的证书(账户密码),所以他们都在同一时间连接无线网络。 Isaac需要结束这一点,否则他将不得不关闭他的WISP并编写HTML代码作为食物! 行动时刻 - 限制用户账户的同时使用 在sites-enabled/default文件

  • 我的会监听局域网连接并很好地接受它们,但当我试图通过手机连接到同一个网络时(使用3G连接),它似乎无法连接。 > 我尝试使用站点获取并尝试连接到它,它确实得到正确的(用我的路由器检查),但然后没有连接被接受。 我试着打开windows 7和路由器上的端口。 我把这些行在我的服务器构造函数: 我将主机上的ip设置为0.0.0.0 谢谢你的帮助。