我正在构建一个客户端/服务器应用程序,用于一些套接字编程练习。
下面是我的服务器类的构造+运行方法。服务器等待客户端的响应,在这种情况下只是一个字符串。
问题是,当客户端响应时,似乎会建立两个连接。从我的print语句中我可以看到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) {
}
}
}
- EDIT-- 与服务器通信的客户端代码(Message是一个简单的“包装器”类):
System.out.println("Write to server:");
String name = scanner.nextLine();
Message message = new Message(name, null);
oos.writeObject(message);
oos.flush();
答案 0 :(得分:1)
如果所有打印都发生两次,则必须有两个连接。之后,第一行再次打印,因为您处于循环中。
NB: