package Ġio . github . s ande e pr aj u Ċ Ċ import Ġio . github . s ande e pr aj u . utils . Database Ċ import Ġio . github . s ande e pr aj u . utils . Image Ċ import Ġjava . io . BufferedReader Ċ import Ġjava . io . Data OutputStream Ċ import Ġjava . io . InputStream Reader Ċ import Ġjava . net . Inet Address Ċ import Ġjava . net . Server Socket Ċ Ċ class ĠMulti Th readed Server Ġ: ĠServer Ġ{ ĊĊĠĠĠ Ġprivate Ġfun Ġhandler ( input : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCPU Ġint ensive ĊĠĠĠĠĠĠĠ Ġreturn ĠImage . process ("/ tmp / hello . png ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠI / O Ġint ensive ĊĠĠĠĠĠĠĠ Ġ// Ġreturn ĠDatabase . query (" SELECT Ġ* ĠFROM Ġusers ; ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlisten ( host : ĠString , Ġport : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprintln ("[ ${ this . java Class . simple Name }] ĠServer Ġlistening Ġat Ġ$ host :$ port ") ĊĊĠĠĠĠĠĠĠ Ġval Ġsocket Ġ= ĠServer Socket ( port , Ġ 0 , ĠInet Address . get ByName ( host )) ĊĊĠĠĠĠĠĠĠ Ġsocket . use Ġ{ Ġsocket Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconnection Ġ= Ġsocket . accept () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġinstead Ġof Ġhandling Ġthis Ġconnection Ġin Ġthe Ġsame Ġthread , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcreate Ġa Ġnew Ġthread Ġfor Ġthis Ġconnection ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠThread ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconnection . use Ġ{ Ġconnection Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Ġ= ĠBufferedReader ( InputStream Reader ( connection . getInputStream ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= ĠData OutputStream ( connection . get OutputStream ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġinput . readLine () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġhandler ( data ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput . write Bytes ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}). start () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ ĠMulti Th readed Server (). listen (" 0 . 0 . 0 . 0 ", Ġ 9 9 9 9 ) Ċ }