java - How do I close a UDP server without throwing an exception? -


i have server waits incoming client messages , uses udp. when try close udp connection ioexception..

public void run(){       string user_message = null;      try {             connection = startserver();             system.out.println("server started");             while ((true) && (serverstarted) ){                      try {                               user_message = receivemessage();                             check_query( user_message , "," );                      } catch ( ioexception ex ) {                             system.out.println("error1 "+ex.getmessage());                             seterror( "error establishing connection " ) ;                             txt_log.settext(txt_log.gettext() + "\n error establishing connection0") ;                             break;                         }                 }             system.out.println("server stopped.....");         }     catch ( socketexception ex ) {             system.out.println("error2 "+ex.getmessage());             seterror("error establishing connection ") ;             txt_log.settext(txt_log.gettext() + "\n error establishing connection1") ;         }     catch( nullpointerexception ex){             system.out.println("error3 "+ex.getmessage());             ex.printstacktrace();             seterror("error null pointer ") ;             txt_log.settext(txt_log.gettext() + "\n error :"+ex.getmessage()) ;     } }      /*  * method starts server datagram bind port  */  public datagramsocket startserver() throws socketexception{              return new datagramsocket(10000); }     /*  * method stops server server not able receive client requests  */  public void closeserver(){          if (connection != null){                 //connection.disconnect();                 connection.close();                 //connection = null;          } }    /*  * method sends message via datagram client  */  private void sendmessage( string message ) throws ioexception{          byte[] message_byte = message.getbytes();         packet_send = new datagrampacket( message_byte , message_byte.length , packet_receive.getaddress() , packet_receive.getport() );         connection.send( packet_send ); }     /*  * method receives messages clients  */ private string receivemessage() throws ioexception,nullpointerexception{     if (connection!=null){         byte[] buf = new byte[256];         packet_receive = new datagrampacket( buf , buf.length ) ;         connection.receive( packet_receive ) ;         return getstring( packet_receive );     }     throw new nullpointerexception("connection cannot null"); }    /*  * method retrieves data packet , converts string  */  private string getstring(datagrampacket packet){          string string = new string ( packet.getdata() , 0 , packet.getlength()).trim();         return string; }   private void drop_dbconnection(){     if (db_connection!=null){         try{             db_connection.close();             //db_connection = null;              }         catch(sqlexception e){                  txt_log.settext("server connection error...");                 seterror("cannot close database connection");             }          } }  public void closeserver(){          if (connection != null){                 //connection.disconnect();                 connection.close();                 //connection = null;          } } 

private void btn_stopactionperformed(java.awt.event.actionevent evt) {

        if ( serverstarted ){                      txt_log.settext( txt_log.gettext()+"\nserver has been stopped ...." ) ;                     serverstarted = false ;                     drop_dbconnection() ;                     closeserver();                      btn_start.setenabled( true ) ;                     btn_stop.setenabled( false );          }        }                                         

my output , stacktrace

server started server started..... error1 socket closed server stopped..... java.net.socketexception: socket closed          @ java.net.plaindatagramsocketimpl.receive0(nativemethod)          @ java.net.plaindatagramsocketimpl.receive(plaindatagramsocketimpl.java:136)          @ java.net.datagramsocket.receive(datagramsocket.java:712)          @ server.server.receivemessage(server.java:608)          @ server.server.run(server.java:528)          @ java.lang.thread.run(thread.java:619) 

how close server no exception thrown?

the exception closed because closed exception. can catch exception , continue rather printing out. best way handle this.


Comments

Popular posts from this blog

python - Scipy curvefit RuntimeError:Optimal parameters not found: Number of calls to function has reached maxfev = 1000 -

c# - How to add a new treeview at the selected node? -

java - netbeans "Please wait - classpath scanning in progress..." -