java - 聊天服务器 - 客户端/服务器聊天 Java 作业

标签 java

我的聊天室程序。我有 2 个包,一个用于客户端,另一个用于服务器。运行服务器程序,填写 PortField 并单击启动服务器按钮,窗口程序卡住,我无法对其进行任何操作,但服务器仍在工作,客户端仍在连接和聊天。

private void btnOpenActionPerformed(java.awt.event.ActionEvent evt) {                                        

    int port = Integer.parseInt(txtPort.getText());
    go(port);
}                                       
private void go(int port){
    try {
        listUser = new Hashtable<String, ClientConnect>();
        server = new ServerSocket(port);
        txaStatus.append("Server is started\n");
        txaStatus.append("IP Server : "+InetAddress.getLocalHost().getHostAddress()+"\n");
        txaStatus.append("Port : " + port + "\n");
        while(true){
            client = server.accept();
            new ClientConnect(this,client);//class ClientConnect for DataOutPut & DataInput Client <=> Server
        }
    } catch (IOException e) {
        txaStatus.append("Server cannot start\n");
                    JOptionPane.showMessageDialog(this,"Port busy","warning",JOptionPane.WARNING_MESSAGE);
                    System.exit(0);
    }
}

最佳答案

您不能在 GUI 线程中运行您的服务器,这将阻止程序接受任何其他输入。您需要将 go() 方法移动到一个单独的线程中。

关于java - 聊天服务器 - 客户端/服务器聊天 Java 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12409467/

相关文章:

java - 如何将消息从 vaadin 客户端类委托(delegate)给服务器类?

java - 有没有办法在新的导航组件上按下后恢复 recyclerview 上的状态

java - 从小部件类连接到数据库

java - 如何使用 aws cli 创建 java aws lambda 函数?

java - 使用 Parts 的 Amazon S3 多文件上传

java - 通过用于 selenium 测试的简单 acl 身份验证来阻止

java - 如何将 log4j 输出打印到日志文件中?

java - 如何让 DocumentFilter 与 JComboBox 一起使用

java - java中二进制字符串的异或

java - 加密/解密文件。 ASCII +1 用于加密/解密