【发布时间】:2012-01-15 16:47:58
【问题描述】:
我必须创建一个具有 GUI 的应用程序。我的应用程序必须作为服务器工作。当它启动时,它必须接受所有传入的连接并将输出写入 JTextArea。我的问题是我必须以我可以接受连接的方式创建ServerSocket ss = new ServerSocket(port_number) 和方法ss.accept。我试图在我的 gui 的主构造函数中创建,但是 ServerSocket anI/O 请求 gui 卡住。一些想法来解决解决方案?
我在我的 GUI 的构造函数中创建:
SwingUtilities.invokeLater(new Runnable(){public void run(){connection();}});
connection() 是我创建 serversocket 并接受调用的方法
【问题讨论】:
-
您应该将服务器的功能与 gui 分开。 Gui 操作需要在称为
EventDispatchThread的东西中运行,任何类似服务器的操作或其他工作都应该在单独的线程中完成 -
@Mazzy 与您上一个问题的建议相同,使用 SwingWokrer
-
没错——你应该已经知道答案了!
-
@Mazzy:但是你应该已经知道解决这类问题是必要的,所以为什么要浪费你和我们的时间来问这个问题呢?相反,您应该专注于让 SwingWorkers 工作,如果失败,请在此处询问 SwingWorkers。
-
I don't have the idea how to use SwingWorker- 有关工作示例,请参阅Concurrency 上的教程。
标签: java swing sockets event-dispatch-thread concurrency