没有消息的Java聊天服务器

时间:2016-01-07 20:50:57

标签: java server client chat

所以我从教程中进行了基本的聊天,一切都很好,除了一件事没有消息。 我的意思是运行客户端的服务器......但是发送按钮或其他什么问题?我和啊是的,server.java安静缓慢,有时冻结。我使用Netbeans的框架选项。

这是客户

<html>
    <head>
        <script>
            window.onload = function(){
                addEvListeners();
                // This function is to assign ELs to buttons in my HTML
                function addEvListeners(){
                    var target = document.getElementsByTagName("button");
                    for (i = 0; i <= target.length - 1; i ++){
                        target[i].addEventListener("click", function(){model();},false);
                    }
                }
                function model(){
                    console.log('yo!');
                }
            }
        </script>
    </head>
    <body>
        <button>Click Me</button>
    </body>
</html>

这是服务器

onload

1 个答案:

答案 0 :(得分:0)

在客户端代码中,在main方法中,while循环的条件是错误的,你错过了!来否定它(就像你在服务器上实际做的那样)。所以它应该是while (!msgin.equals("exit"))

在服务器代码中,您没有从输入流中读取(实际上是在客户端上执行),因此您错过了while循环中的msgin = din.readUTF();语句。
这也是为什么服务器很慢,它不断循环并在文本上写一个空文本的原因,而它应该在读取输入流上的下一个输入时被阻止。

您可以对代码进行进一步改进:

  • 使用camel case for class names(即代替chat_client使用ChatClient)
  • 使用日志记录机制(即log4j,或在此示例中使用System.out.println("log here the "+variable)调用)获取操作和互动的反馈
  • 不要离开catch blocks empty:您可能会错过例外情况。所以在catch块中至少添加System.out.err(e);之类的语句(但是,再次,更好地使用具有正确日志记录级别的日志库)
  • 发送消息后,从客户端的文本字段中清除文本(当前文本仍然存在)。 msg_text.setText("");方法的try块末尾的msg_sendActionPerformed已足够。