import java.io.IOException; import javax.microedition.midlet.*; import javax.microedition.io.*; import javax.wireless.messaging.*; public class Example extends MIDlet implements MessageListener { MessageConnection messconn; int total = 0; boolean done; // Initial tests setup and execution. public void startApp() { try { // Get our receiving port conection. messconn = (MessageConnection) Connector.open("sms://:6222"); // Register a listener for inbound messages. messconn.setMessageListener(this); // Start a message-reading thread. done = false; new Thread(new Reader()).start(); } catch (IOException e) { // Handle startup errors } } // Asynchronous callback for inbound message. public void notifyIncomingMessage(MessageConnection conn) { if (conn == messconn) { total++; } } // Required MIDlet method - release the connection and // signal the reader thread to terminate. public void pauseApp() { done = true; try { messconn.close(); } catch (IOException e) { // Handle errors } } // Required MIDlet method - shutdown. // @param unconditional forced shutdown flag public void destroyApp(boolean unconditional) { done = true; try { messconn.setMessageListener(null); messconn.close(); } catch (IOException e) { // Handle shutdown errors. } } // Isolate blocking I/O on a separate thread, so callback // can return immediately. class Reader implements Runnable { // The run method performs the actual message reading. public void run() { while (!done) { try { Message mess = messconn.receive(); } catch (IOException ioe) { // Handle reading errors } } } } }