java - Null Pointer Exception on Buffer IO -


for software engineering class group has camera stream server , send client via socket. sending images through socket. when try run our program 1 image next image turns null , therefore nullpointer exception.

here userclient class. userclient receives sequence of images. null pointer comes in run method, labeled comment.

/*  * change license header, choose license headers in project properties.  * change template file, choose tools | templates  * , open template in editor.  */ package communication;  import java.awt.image.bufferedimage; import java.io.bufferedreader; import java.io.ioexception; import java.io.inputstreamreader; import java.io.objectinputstream; import java.net.connectexception; import java.net.socket; import java.net.unknownhostexception; import java.util.logging.level; import java.util.logging.logger; import javax.imageio.imageio;  import javax.swing.joptionpane; import userpc.rovergui;  /**  * simple swing-based client capitalization server. has main  * frame window text field entering strings , textarea see  * results of capitalizing them.  */ public class userclient extends thread{      //objectinputstream input;     socket s = null;     boolean done = false;     string serveraddress;     rovergui gui;      public static void main(string[] args){         string serveraddress = joptionpane.showinputdialog(                 "enter ip address of machine is\n"                 + "running date service on port 9090:");         try {             userclient c = new userclient(null, serveraddress);         } catch (ioexception ex) {             logger.getlogger(userclient.class.getname()).log(level.severe, null, ex);         }     }      public userclient(rovergui gui, string serveraddress) throws unknownhostexception, ioexception{         this.gui=gui;         this.serveraddress=serveraddress;     }      @override     public void run(){         while (!done) {             try {                 if (serveraddress.equals("")) {                     throw new unknownhostexception();                 }                 s = new socket(serveraddress, 9090);                 //input =new objectinputstream(s.getinputstream());                 done = true;             } catch (connectexception e) {                 gui.display("wait servor...");             } catch (unknownhostexception ex) {                 gui.display("un known host exception occur...");             } catch (ioexception ex) {                 logger.getlogger(userclient.class.getname()).log(level.severe, null, ex);             }         }          while(true){             try {                     gui.seticons(imageio.read(imageio.createimageinputstream(s.getinputstream())),null); //null pointer here                 //system.out.println(input.readline());             } catch (ioexception ex) {                 logger.getlogger(userclient.class.getname()).log(level.severe, null, ex);             }         }     }      public void close() throws ioexception {         //input.close();         s.close();     } } 

the roverserver sends stream of images.

/*  * change license header, choose license headers in project properties.  * change template file, choose tools | templates  * , open template in editor.  */ package communication;  import camera.imagebuffer; import java.io.ioexception; import java.io.objectoutputstream; import java.io.printwriter; import java.net.serversocket; import java.net.socket; import java.util.logging.level; import java.util.logging.logger;  /**  *  * @author junxin  */ public class roverserver implements runnable {      socket socket = null;     serversocket listener = null;     objectoutputstream out;     imagebuffer ib;     roverclient client;      public static void main(string arg[]){         try {             imagebuffer ib=new imagebuffer();             roverserver server=new roverserver(ib);             new thread(server).start();             roverclient client= new roverclient("150.250.220.214");             client.start();         } catch (ioexception ex) {             logger.getlogger(roverserver.class.getname()).log(level.severe, null, ex);         }     }      public roverserver(imagebuffer ib) {         this.ib=ib;         try {             listener = new serversocket(9090);         } catch (ioexception ex) {             logger.getlogger(roverserver.class.getname()).log(level.severe, null, ex);         }      }      @override     public void run() {         try {             socket = listener.accept();             system.out.println("client accept");              out =new objectoutputstream(socket.getoutputstream());             while(true){                 //out.printf("", ib.getimage(),ib.getimage2());                 out.writeobject(ib.getimage());                 thread.sleep(100);             }         } catch (ioexception ex) {             system.out.println("unable accept client!");         } catch (interruptedexception ex) {             logger.getlogger(roverserver.class.getname()).log(level.severe, null, ex);         }     } } 

thanks help!

 gui.seticons(imageio.read(imageio.createimageinputstream(s.getinputstream())),null); 

assigns sockets input stream new reader, right?
allowed once per stream.
if assign stream multiple reader, first reader can read stream
in folling example, first reader gets values (server sends hi\nat\nall):

        bufferedreader firstreader = new bufferedreader(new inputstreamreader(                 socket.getinputstream()));         bufferedreader secondreader = new bufferedreader(new inputstreamreader(                 socket.getinputstream()));         system.out.println("str = " + firstreader.readline()); //str = hi         system.out.println("str = " + secondreader.readline()); //str = null !!!!!         system.out.println("str = " + firstreader.readline()); //str = @         system.out.println("str = " + firstreader.readline()); //str = 

you shoud create 1 reader per connection , re-use in loop.


Comments

Popular posts from this blog

python - mat is not a numerical tuple : openCV error -

c# - MSAA finds controls UI Automation doesn't -

wordpress - .htaccess: RewriteRule: bad flag delimiters -