Demonstrates the functionality of DatagramConnection framework.

/*** Chapter 5 Sample Code for Datagram functionality ***/import javax.microedition.midlet.*;import javax.microedition.lcdui.*;import javax.microedition.io.*;import java.util.*;public class DatagramTest extends MIDlet {  // Port 9001 is used for datagram communication    static final int receiveport  = 9001;  Receive receiveThread = new Receive();    public DatagramTest() {  }    public void startApp() {        // Start the listening thread        receiveThread.start();        // Send message Hello World!        sendMessage(“Hello World!”);    }    public void pauseApp() {    }    public void destroyApp(boolean unconditional)  {    }  // This function sends a datagram message on port 9001.    void sendMessage(String msg)  {    String destAddr = “datagram://localhost:” + receiveport;        DatagramConnection dc = null;    Datagram dgram;    byte[] bMsg = msg.getBytes();    try {           dc = (DatagramConnection)Connector.open(destAddr);      // Create a datagram socket and send            dgram= dc.newDatagram(bMsg,bMsg.length,destAddr);            dc.send(dgram);      System.out.println(“Sending Packet:” +  msg);            dc.close();        }        catch (Exception e)  {            System.out.println(“Exception Connecting: ” + e.getMessage());    }    finally {            if (dc != null) {                try {                    dc.close();                }                catch (Exception e) {                   System.out.println(“Exception Closing: ” + e.getMessage());                }            }        }    }  // This function is a listener. It waits to receive datagram packets on 9001 port    class Receive extends Thread  {        public void run() {        doReceive();        }        void doReceive() {            DatagramConnection dc = null;            Datagram dgram;      try {        // Open Server side datagram connection                dc = (DatagramConnection)Connector.open(“datagram://:”+receiveport);          String receivedMsg;          while (true) {                    dgram = dc.newDatagram(dc.getMaximumLength());                try {             dc.receive(dgram);          } catch (Exception e) {            System.out.println(“Exception in receiving message:” + e.getMessage());          }                    receivedMsg = new String(dgram.getData(), 0,dgram.getLength());                    System.out.println(“Received Message: ” + receivedMsg);                    try {                       Thread.sleep(500);                    }                    catch (Exception e) {                      System.out.println(“Exception doReceive(): ” + e.getMessage());                    }                }            }          catch (Exception e) {          System.out.println(“Exception doReceive(): ” + e.getMessage());       }       finally {          if (dc != null) {          try {                       dc.close();                   }                   catch (Exception e) {                      System.out.println(“Exception Closing: ” + e.getMessage());                   }               }          }        }     } }