java - ServerSocket.accept() throwing SocketTimeoutException with null message -
i trying instance of socket serversocket object. but, prints
sockettimeoutexception = null
there code:
try { // listen new connections log.d("shairport", "service >> in try "); try { servsock = new serversocket(port); } catch (ioexception e) { log.d("shairport", "service >> in try # io exception = " +e.getmessage()); servsock = new serversocket(); }catch(exception e) { log.d("shairport", "service >> in try # e xception = " +e.getmessage()); } // dns emitter (bonjour) byte[] hwaddr = gethardwareadress(); emitter = new bonjouremitter(name, getstringhardwareadress(hwaddr), port); //setting timeout servsock.setsotimeout(10000); log.d("shairport", "service >> stopthread = " +stopthread); while (!stopthread) { try { //********** throwing exception ***************// socket socket = servsock.accept(); servsock.setreuseaddress(true); log.d("shairport", "service >> got connection " + socket.tostring()); new rtspresponder(hwaddr, socket).start(); } catch(sockettimeoutexception e) { e.printstacktrace(); log.d("shairport", "service >> sockettimeoutexception = " + e.getmessage()); //********* here getting exception **************// }catch(exception e) { log.d("shairport", "service >> exception = " + e.getmessage()); servsock.close(); } } } catch (ioexception e) { log.d("shairport", "service >> try # catch ioexception = " + e.getmessage()); throw new runtimeexception(e); }
please let me know if doing wrong, can resolve issue.
02-06 18:14:08.300: w/system.err(2245): java.net.sockettimeoutexception 02-06 18:14:08.300: w/system.err(2245): @ java.net.plainsocketimpl.accept(plainsocketimpl.java:108) 02-06 18:14:08.300: w/system.err(2245): @ java.net.serversocket.implaccept(serversocket.java:203) 02-06 18:14:08.310: w/system.err(2245): @ java.net.serversocket.accept(serversocket.java:128) 02-06 18:14:08.310: w/system.err(2245): @ vavi.apps.shairport.launchthread.run(launchthread.java:99) 02-06 18:14:08.310: w/system.err(2245): caused by: libcore.io.errnoexception: accept failed: eagain (try again) 02-06 18:14:08.320: w/system.err(2245): @ libcore.io.posix.accept(native method) 02-06 18:14:08.320: w/system.err(2245): @ libcore.io.blockguardos.accept(blockguardos.java:55) 02-06 18:14:08.320: w/system.err(2245): @ java.net.plainsocketimpl.accept(plainsocketimpl.java:98) 02-06 18:14:08.320: w/system.err(2245): ... 3 more
you're setting ten second timeout on server socket.
the accept()
method therefore throw sockettimeoutexception
if no connection arrives within ten seconds.
if don't want behaviour, don't set timeout, or raise it.
i have no idea why you're surprised @ getting timeout when you're setting yourself.
nb utterly pointless call setreuseaddress()
on server socket after bound, let alone every time accept new connection.
Comments
Post a Comment