Search code examples
javasocketsstreamobjectinputstream

Program pauses on initializing object input stream in Java


While running debugger, the program pauses on initializing object streams from server main input output streams. Following is the code :

 public TFileReader(Client cli)throws Exception{
    this.cli = cli;
    fileSock = new Socket(cli.ServerIp(), cli.FilePort());
    fobjIn = new ObjectInputStream(fileSock.getInputStream());
    fobjOut = new ObjectOutputStream(fileSock.getOutputStream());
    fobjOut.flush();

}

 @Override
public void run(){

    try{
            System.out.println("file reader thread online");

            fobjOut.writeObject(cli.Name());
            fobjOut.flush();
           String per = (String) fobjIn.readObject();
            System.out.println(per+"video filing...");
            if(!per.equals("OKF"))
            {
                    throw new Exception("Error In retriving video.");
            }

It pauses on fobjIn and do not go to execute fobjOut although fobjIn it passes from fobjIn breakpoint but do not hit out breakpoint.


Solution

  • I would keep it simple like this

    public TFileReader(Client cli) throws IOException {
        this.cli = cli;
        socket = new Socket(cli.ServerIp(), cli.FilePort());
        out = new ObjectOutputStream(socket.getOutputStream());
        out.flush();
        in = new ObjectInputStream(socket.getInputStream());
    }
    
    public void writeObject(Object o) throw IOException {
        out.writeObject(o);
        out.reset();
        out.flush();
    }
    
    public <T> T readObject() throw IOException {
        return (T) in.readObject();
    }
    
    public void close() throws IOException {
        in.close();
        out.close();
        socket.close();
    }