今天写了个类似于聊天室的东西,客户端单独运行的时候能够很好的出现界面,但是一旦启动服务器端再启动客户端时,客户端界面就不能全部显示,而且事件处理也不起作用,就卡在那。
有没有谁知道这是为什么???ChatClient cc=new ChatClient("聊天室2.0",nikeName);;
cc.LaunchFrame();//布局和添加事件处理
cc.ReceiveMessage();//接收消息服务器端应该没有问题,因为我在简单版本中测试过。
望高手指点。

解决方案 »

  1.   

    Socket  全双工的,你 A->B 和 B->A 应该各弄一个线程来处理,或者用异步 Socket 的事件处理方式。如果单线程的话,到底是应该先 socketInputStream.read() 还是 socketOutputStream.write() 呢?
    这严重依赖次序的做法在实际上几乎没有任何用处。
      

  2.   

    嗯 在启动一个线程 (可以用handler) 将读写的操作一个 放到启动的线程中
      

  3.   

    给你介绍几个成熟的 java聊天室源码吧,里面很详细的JAVA聊天室源码 
    http://wenku.baidu.com/view/254f87f8941ea76e58fa04b3.html
    http://wenku.baidu.com/view/2b087ce69b89680203d82597.html
    http://wenku.baidu.com/view/e0e86dd126fff705cc170acf.html
    http://wenku.baidu.com/view/f8b5b60216fc700abb68fc95.html希望对你有帮助
      

  4.   

    谢谢各位了,我想可能也是接受的时候出现问题了,因为我把cc.LaunchFrame()和cc.ReceiveMessage()换动一下就能显示界面,但是连接有问题。回头用多线程改一下。谢谢了。
      

  5.   

    如果客户端 是在主线程中用DataOutputStream的readUTF()方法读取服务器数据的话,整个程序是会进入阻塞状态的
      

  6.   

    界面线程(我称Swing线程)被锁,确保数据通信部在Swing线程。给个例子参考,Eclipse工程,可以直接调试。
    http://mybeautiful.javaeye.com/blog/659317