客户端不刷新从服务器发送的数据

时间:2013-06-15 15:27:03

标签: java multithreading serialization while-loop

我有更新我的序列化对象的问题。客户端不刷新从服务器发送的数据。我在客户端创建了循环,但它仍然没有更新。

    public void run(){
              try {
                    socket = new Socket(host.getText(), new Integer(port.getText()));
                    wyswietlKomunikat("Connected.");

我在客户端创建了循环,但它仍然没有更新。

             // Serialization      
             ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
            while(true){
             Pakiet p = (Pakiet) ois.readObject();
             showHome(p.getHome());
             ShowAway(p.getAway());
             showHomeLine(p.getShowHomeLine());
             showAwayLine(p.getShowHomeLine());

             // end of serialization

                    in = new Scanner(socket.getInputStream());                    
                    while(in.hasNextLine()){
                            showComment(in.nextLine());
                    }
              }
            }

      catch (UnknownHostException e) {
            showComment("no connection!");

      }
      catch (IOException e) {
            showComment(e.toString());
      } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
    }
      finally {
             try {
                  socket.close();
            }
            catch(IOException e) {
            }
     }

2 个答案:

答案 0 :(得分:0)

尝试

// loop forever
while(true) {
    // check if there is something new
    if (in.hasNextLine()) {
        // there is, read it
        showComment(in.nextLine());
    }
}

答案 1 :(得分:-1)

这里的问题是你在同一个套接字上混合使用两种流。不要那样做。由于缓冲,流可以“窃取”彼此的数据。继续使用对象流,或者根本不使用所有和正义和行,字节,无论你想要什么。

您可能也遇到了ObjectOutputStream.reset()是解决方案的问题:请参阅其Javadoc。