gpt4 book ai didi

java - 套接字编程。程序创建 2 个连接,而不是仅 1 个

转载 作者:太空宇宙 更新时间:2023-11-04 06:59:56 24 4
gpt4 key购买 nike

我正在构建一个客户端/服务器应用程序,用于一些套接字编程练习。

下面是我的服务器类的构造+运行方法。服务器等待客户端的响应,在本例中只是一个字符串。

问题在于,当客户端响应时,它似乎建立了两个连接。从我的打印语句中我可以看到 run 方法中的所有代码都运行了两次,然后再次运行第一行。

为什么要 dateServer.accept();仅接受一个客户端请求的连接?

public Server() throws Exception {
dateServer = new ServerSocket(3001);
System.out.println("Server lytter på port 3000.");
this.start();
}


public void run() {
while (true) {
try {
System.out.println("waiting for client to request");
Socket client = dateServer.accept();
System.out.println("connection established");
Connect c = new Connect(client);
clients.add(c);
this.sleep(5000);
} catch (Exception e) {
}
}
}

--编辑--与服务器对话的客户端代码(消息是一个简单的“包装”类):

System.out.println("Write to server:");
String name = scanner.nextLine();
Message message = new Message(name, null);
oos.writeObject(message);
oos.flush();

最佳答案

如果所有打印发生两次,则必定有两个连接。此后会再次打印第一行,因为您处于循环中。

注意:

  1. 永远不要忽略异常:尤其是 IOException。
  2. sleep 完全没有意义。当没有传入连接时,accept() 将阻塞。你实际上是在浪费时间。

关于java - 套接字编程。程序创建 2 个连接,而不是仅 1 个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22235851/

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