我在GUI
中有一个基本Java
,其中有JButton
,我已经提供了使用该按钮启动Server
的功能。但是当我点击按钮时,程序会冻结。是因为while loop
吗?如果是这样我怎么能克服这个?
Server Code
void connect_clients()
{
try {
ServerSocket listener = new ServerSocket(7700);
try {
while (true) {
Socket socket = listener.accept();
try {
PrintWriter out =
new PrintWriter(socket.getOutputStream(), true);
out.println(new Date().toString());
}
finally {
socket.close();
}
}
}
finally {
listener.close();
}
}
catch (IOException ex) {
Logger.getLogger(Test_Frame.class.getName()).log(Level.SEVERE, null, ex);
}
}
答案 0 :(得分:0)
以下是ServerSocket.accept()的方法说明:
侦听与此套接字的连接并接受它。该 方法阻塞,直到建立连接。
在插入数据之前,您的程序将冻结。如果是另一个问题,请检查您的日志。可能还有另一个问题。
答案 1 :(得分:0)
您的程序正在冻结,因为您正在阻止UI线程。您需要在单独的帖子上发布此内容:
public void postListen()
{
new Thread(new Runnable()
{
public void run()
{
connect_clients();
}
}).start();
}
调用该方法,它应该在一个单独的线程上运行connect_clients()方法。新线程将阻塞,直到客户端连接。