gpt4 book ai didi

java - 限制 ServerSocket 的连接数

转载 作者:可可西里 更新时间:2023-11-01 02:37:13 25 4
gpt4 key购买 nike

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

public ServerSocket(int port, int backlog) throws IOException

创建一个服务器套接字并将其绑定(bind)到指定的本地端口号,具有指定的积压。端口号 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 上的连接吗?

最佳答案

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

关于java - 限制 ServerSocket 的连接数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23418621/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com