package poc.jwork.j2me.sendrecvsms;
import java.io.IOException;
import javax.microedition.io.Connector;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.wireless.messaging.MessageConnection;
import javax.wireless.messaging.MessageListener;
import javax.wireless.messaging.TextMessage;
public class SMSSender extends MIDlet implements
CommandListener {
         private Form formSender = new Form("SMS Sender");
         private TextField tfDestination = new TextField("Destination",
"",
20,
TextField.PHONENUMBER);
         private TextField tfPort = new TextField("Port", "5000", 6, TextField.NUMERIC);
         private TextField tfMessage = new TextField("Message", "message", 150, TextField.ANY);
         private Command cmdSend = new Command("Send", Command.OK, 1);
         private Command cmdExit = new Command("Exit", Command.EXIT, 1);
         private Display display;
         public SMSSender() {
                 formSender.append(tfDestination);
                 formSender.append(tfPort);
                 formSender.append(tfMessage);
                 formSender.addCommand(cmdSend);
                 formSender.addCommand(cmdExit);
                 formSender.setCommandListener(this);
                 display = Display.getDisplay(this);
         }
         protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
         }
         protected void pauseApp() {
         }
         protected void startApp() throws
MIDletStateChangeException {
                 display.setCurrent(formSender);
         }
         public void commandAction(Command c, Displayable
d)
{
                 if (c==cmdSend) {
                          SendMessage.execute(tfDestination.getString(), tfPort.getString(), tfMessage.getString());
                 } else if (c==cmdExit) {
                          notifyDestroyed();
                 }
         }
}
class SendMessage {
         public static void execute(final String destination, final String port, final String message) {
                 Thread thread = new Thread(new Runnable() {
                          public void run() {
                                   MessageConnection
msgConnection;
                                   try {
                                            msgConnection
=
(MessageConnection)Connector.open("sms://"+destination+":" + port);
                                            TextMessage
textMessage = (TextMessage)msgConnection.newMessage(
                                                             MessageConnection.TEXT_MESSAGE);
                                            textMessage.setPayloadText(message);
                                            msgConnection.send(textMessage);
                                            msgConnection.close();
                                   } catch (IOException e) {
                                            e.printStackTrace();
                                   }
                          }
                 });
                 thread.start();
         }
}
package poc.jwork.j2me.sendrecvsms;
 
import java.io.IOException;
import java.io.InterruptedIOException;
 
import javax.microedition.io.Connector;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.wireless.messaging.Message;
import javax.wireless.messaging.MessageConnection;
import javax.wireless.messaging.MessageListener;
import javax.wireless.messaging.TextMessage;
 
public class SMSReceiver extends MIDlet implements CommandListener, MessageListener {
 
private Form formReceiver = new Form("SMS Receiver");
private TextField tfPort = new TextField("Port", "5000", 6, TextField.NUMERIC);
private Command cmdListen = new Command("Listen", Command.OK, 1);
private Command cmdExit = new Command("Exit", Command.EXIT, 1);
private Display display;
 
public SMSReceiver() {
formReceiver.append(tfPort);
formReceiver.addCommand(cmdListen);
formReceiver.addCommand(cmdExit);
formReceiver.setCommandListener(this);
 
display = Display.getDisplay(this);
}
 
protected void destroyApp(boolean unconditional)
throws MIDletStateChangeException {
 
}
 
protected void pauseApp() {
 
}
 
protected void startApp() throws MIDletStateChangeException {
display.setCurrent(formReceiver);
}
 
public void commandAction(Command c, Displayable d) {
if (c==cmdListen) {
ListenSMS sms = new ListenSMS(tfPort.getString(), this);
sms.start();
formReceiver.removeCommand(cmdListen);
} else if (c==cmdExit) {
notifyDestroyed();
}
}
 
public void notifyIncomingMessage(MessageConnection conn) {
Message message;
try {
message = conn.receive();
if (message instanceof TextMessage) {
TextMessage tMessage = (TextMessage)message;
formReceiver.append("Message received : "+tMessage.getPayloadText()+"\n");
} else {
formReceiver.append("Unknown Message received\n");
}
} catch (InterruptedIOException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
 
}
 
class ListenSMS extends Thread {
private MessageConnection msgConnection;
private MessageListener listener;
private String port;
 
public ListenSMS(String port, MessageListener listener) {
this.port = port;
this.listener = listener;
}
 
public void run() {
try {
msgConnection = (MessageConnection)Connector.open("sms://:" + port);
msgConnection.setMessageListener(listener);
} catch (IOException e) {
e.printStackTrace();
}
}
 
}