我正在尝试使用服务器套接字来监听客户端输入流,但是当我执行start_listening()
方法时,我的程序被卡住了。我甚至试图删除循环,但我仍然有同样的问题。我猜它等待客户端互动。在程序工作的同时还有另一种方法可以听吗?
public static void start_listening(){
listener = new ServerSocket(9090);
while (true) {
Socket socket = listener.accept();
ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
us = (User) in.readObject();
}
}
答案 0 :(得分:2)
使用套接字技术时,accept()
会阻止当前线程的执行,直到客户端连接到侦听套接字。这是一种已定义的行为。 Java documentation说:“方法[accept()
]会阻塞,直到建立连接。”让服务器在无限循环内运行就可以了。
所以,为了让整个事情顺利进行,你可能想看看this socket example which uses threads。在run()
的{{1}}方法中,您将处理您的用户对象。
答案 1 :(得分:1)
答案 2 :(得分:0)
您可以使用Boolean
flag
来指示何时结束while循环。其他方面,循环保持迭代,因为它永远不会中断。
while (true) { //will it ever breaks ??
}