Mega Code Archive

 
Categories / Java / J2ME
 

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());                    }                }           }         }      }  }