Como fazer um ping em conexões de rede nos dispositivos J2ME
A ilustração abaixo dá um ping no servidor com um intervalo de 1 minuto.
|
<B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >java.io.*;</SPAN>
<B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >javax.microedition.midlet.*;</SPAN>
<B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >javax.microedition.io.*;</SPAN>
<B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >javax.microedition.lcdui.*;</SPAN>
<B><SPAN lang=EN-US >public class </SPAN></B><SPAN lang=EN-US >pingMIDLET </SPAN><B><SPAN lang=EN-US >extends </SPAN></B><SPAN lang=EN-US >MIDlet {</SPAN>
<B><SPAN lang=EN-US >private </SPAN></B><SPAN lang=EN-US >Display display;</SPAN>
<B><SPAN lang=EN-US >private </SPAN></B><SPAN lang=EN-US >String url = </SPAN><SPAN lang=EN-US >"http://server"</SPAN><SPAN lang=EN-US >;</SPAN>
<B><SPAN lang=EN-US >private </SPAN></B><SPAN lang=EN-US >Form form;</SPAN>
<B><SPAN lang=EN-US >private </SPAN></B><SPAN lang=EN-US >Command exit;</SPAN>
<B><SPAN lang=EN-US >private </SPAN></B><SPAN lang=EN-US >Command stop;</SPAN>
<B><SPAN lang=EN-US >private </SPAN></B><SPAN lang=EN-US >Timer timer;</SPAN>
<B><SPAN lang=EN-US >private </SPAN></B><SPAN lang=EN-US >RunTimerTask tt;</SPAN>
<B><SPAN lang=EN-US >private int </SPAN></B><SPAN lang=EN-US >count = </SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >;</SPAN>
<B><SPAN lang=EN-US >boolean </SPAN></B><SPAN lang=EN-US >isPing = </SPAN><B><SPAN lang=EN-US >false</SPAN></B><SPAN lang=EN-US >;</SPAN>
<B><SPAN lang=EN-US >public </SPAN></B><SPAN lang=EN-US >pingMIDLET() {</SPAN>
<SPAN lang=EN-US >display = Display.getDisplay(</SPAN><B><SPAN lang=EN-US >this</SPAN></B><SPAN lang=EN-US >);</SPAN>
<SPAN lang=EN-US >form = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >Form(</SPAN><SPAN lang=EN-US >"Ping"</SPAN><SPAN lang=EN-US >);</SPAN>
<SPAN lang=EN-US >exit = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >Command(</SPAN><SPAN lang=EN-US >"Exit"</SPAN><SPAN lang=EN-US >, Command.EXIT, </SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >);</SPAN>
<SPAN lang=EN-US >stop= </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >Command(</SPAN><SPAN lang=EN-US >"Parar"</SPAN><SPAN lang=EN-US >, Command.STOP, </SPAN><SPAN lang=EN-US >2</SPAN><SPAN lang=EN-US >);</SPAN>
<SPAN lang=EN-US >}</SPAN>
<B><SPAN lang=EN-US >public void </SPAN></B><SPAN lang=EN-US >startApp() {</SPAN>
<SPAN lang=EN-US >form.addCommand(exit);</SPAN>
<SPAN lang=EN-US >form.addCommand(stop);</SPAN>
<SPAN lang=EN-US >form.setCommandListener(</SPAN><B><SPAN lang=EN-US >this</SPAN></B><SPAN lang=EN-US >);</SPAN>
<SPAN lang=EN-US >// Repetindo a cada 1 minuto</SPAN>
<SPAN lang=EN-US >timer = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >Timer();</SPAN>
<SPAN lang=EN-US >tt = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >RunTimerTask();</SPAN>
<SPAN lang=EN-US >timer.schedule(tt,</SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >, </SPAN><SPAN lang=EN-US >1000</SPAN><SPAN lang=EN-US >*</SPAN><SPAN lang=EN-US >60</SPAN><SPAN lang=EN-US >);</SPAN>
<B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(isPing) {</SPAN>
<SPAN lang=EN-US >timer.cancel();</SPAN>
<SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US >display.setCurrent(form);</SPAN>
<SPAN lang=EN-US >}</SPAN>
<B><SPAN lang=EN-US >public void </SPAN></B><SPAN lang=EN-US >pauseApp() { }</SPAN>
<B><SPAN lang=EN-US >public void </SPAN></B><SPAN lang=EN-US >destroyApp(</SPAN><B><SPAN lang=EN-US >boolean </SPAN></B><SPAN lang=EN-US >unconditional) { }</SPAN>
<B><SPAN lang=EN-US >public void </SPAN></B><SPAN lang=EN-US >commandAction(Command c, Displayable d) {</SPAN>
<B><SPAN lang=EN-US >if </SPAN></B><SPAN lang=EN-US >(c == stop) {</SPAN>
<SPAN lang=EN-US >timer.cancel();</SPAN>
<SPAN lang=EN-US >} </SPAN><B><SPAN lang=EN-US >else if </SPAN></B><SPAN lang=EN-US >(c == exit) {</SPAN>
<SPAN lang=EN-US >destroyApp(</SPAN><B><SPAN lang=EN-US >false</SPAN></B><SPAN lang=EN-US >);</SPAN>
<SPAN lang=EN-US >notifyDestroyed();</SPAN>
<SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US >/*--------------------------------------------------</SPAN>
<SPAN lang=EN-US >* Classe RunTimerTask – Executando a tarefa</SPAN>
<SPAN lang=EN-US >*-------------------------------------------------*/</SPAN>
<B><SPAN lang=EN-US >private class </SPAN></B><SPAN lang=EN-US >RunTimerTask </SPAN><B><SPAN lang=EN-US >extends </SPAN></B><SPAN lang=EN-US >TimerTask {</SPAN>
<B><SPAN lang=EN-US >public final void </SPAN></B><SPAN lang=EN-US >run() {</SPAN>
<SPAN lang=EN-US >HttpConnection c = </SPAN><B><SPAN lang=EN-US >null</SPAN></B><SPAN lang=EN-US >;</SPAN>
<SPAN lang=EN-US >OutputStream os = </SPAN><B><SPAN lang=EN-US >null</SPAN></B><SPAN lang=EN-US >;</SPAN>
<SPAN lang=EN-US >InputStream is = </SPAN><B><SPAN lang=EN-US >null</SPAN></B><SPAN lang=EN-US >;</SPAN>
<B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >ch;</SPAN>
<SPAN lang=EN-US >StringBuffer b = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >StringBuffer();</SPAN>
<B><SPAN lang=EN-US >try </SPAN></B><SPAN lang=EN-US >{</SPAN>
<SPAN lang=EN-US >c = (HttpConnection)Connector.open(url);</SPAN>
<SPAN lang=EN-US >// Configurando o request method e cabeçalhos</SPAN>
<SPAN lang=EN-US >c.setRequestMethod(HttpConnection.POST);</SPAN>
<SPAN lang=EN-US >c.setRequestProperty(</SPAN>
<SPAN lang=EN-US >"If-Modified-Since"</SPAN><SPAN lang=EN-US >,</SPAN><SPAN lang=EN-US >"7 Sep 2005 19:43:31 GMT"</SPAN><SPAN lang=EN-US >);</SPAN>
<SPAN lang=EN-US >c.setRequestProperty(</SPAN>
<SPAN lang=EN-US >"User-Agent"</SPAN><SPAN lang=EN-US >,</SPAN><SPAN lang=EN-US >"Profile/MIDP-1.0 Configuration/CLDC-1.0"</SPAN><SPAN lang=EN-US >);</SPAN>
<SPAN lang=EN-US >c.setRequestProperty(</SPAN><SPAN lang=EN-US >"Content-Language"</SPAN><SPAN lang=EN-US >, </SPAN><SPAN lang=EN-US >"en-US"</SPAN><SPAN lang=EN-US >);</SPAN>
<SPAN lang=EN-US >// Otendo<SPAN > </SPAN>a saída</SPAN>
<SPAN lang=EN-US >os = c.openOutputStream();</SPAN>
<SPAN lang=EN-US >os.write(</SPAN><SPAN lang=EN-US >"Ping"</SPAN><SPAN lang=EN-US >.getBytes());</SPAN>
<SPAN lang=EN-US >os.flush();</SPAN>
<SPAN lang=EN-US >is = c.openInputStream();</SPAN>
<B><SPAN lang=EN-US >while </SPAN></B><SPAN lang=EN-US >((ch = is.read()) != -</SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >) {</SPAN>
<SPAN lang=EN-US >b.append((</SPAN><B><SPAN lang=EN-US >char</SPAN></B><SPAN lang=EN-US >)ch);</SPAN>
<SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US >isPing = </SPAN><B><SPAN lang=EN-US >true</SPAN></B><SPAN lang=EN-US >;</SPAN>
<SPAN lang=EN-US >form.append(</SPAN><SPAN lang=EN-US >"ping - Sucesso"</SPAN><SPAN lang=EN-US >);</SPAN>
<SPAN lang=EN-US >} </SPAN><B><SPAN lang=EN-US >catch</SPAN></B><SPAN lang=EN-US >(IOException e) {</SPAN>
<SPAN lang=EN-US >isPing = </SPAN><B><SPAN lang=EN-US >false</SPAN></B><SPAN lang=EN-US >;</SPAN>
<SPAN lang=EN-US >form.append(</SPAN><SPAN lang=EN-US >"Pinging....."</SPAN><SPAN lang=EN-US >);</SPAN>
<SPAN lang=EN-US >} </SPAN><B><SPAN lang=EN-US >finally </SPAN></B><SPAN lang=EN-US >{</SPAN>
<SPAN lang=EN-US >is.close();</SPAN>
<SPAN lang=EN-US >os.close();</SPAN>
<SPAN lang=EN-US >c.close();</SPAN>
<SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US >}</SPAN>
|