Programming Tutorials

UDP Datagram sample in J2ME

By: Fazal in J2ME Tutorials on 2007-09-17  

Here's an example program that demonstrates how to use UDP Datagram in J2ME:

import javax.microedition.io.*;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class UDPDatagramExample extends MIDlet implements CommandListener, Runnable {
    
    private Display display;
    private Form form;
    private Command sendCommand, exitCommand;
    private TextField textField;
    private Thread thread;
    
    private DatagramConnection connection;
    private Datagram datagram;
    private final int PORT = 1234;
    private final String IP = "127.0.0.1";

    public void startApp() {
        display = Display.getDisplay(this);
        
        // initialize the form
        form = new Form("UDP Datagram Example");
        textField = new TextField("Type a message:", "", 30, TextField.ANY);
        form.append(textField);
        sendCommand = new Command("Send", Command.OK, 0);
        exitCommand = new Command("Exit", Command.EXIT, 0);
        form.addCommand(sendCommand);
        form.addCommand(exitCommand);
        form.setCommandListener(this);
        
        display.setCurrent(form);
        
        // create the datagram connection
        try {
            connection = (DatagramConnection) Connector.open("datagram://" + IP + ":" + PORT);
            datagram = connection.newDatagram(connection.getMaximumLength());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    public void pauseApp() {}
    
    public void destroyApp(boolean unconditional) {
        try {
            connection.close();
        } catch (Exception e) {}
    }

    public void commandAction(Command c, Displayable s) {
        if (c == sendCommand) {
            thread = new Thread(this);
            thread.start();
        } else if (c == exitCommand) {
            destroyApp(false);
            notifyDestroyed();
        }
    }
    
    public void run() {
        try {
            String message = textField.getString();
            datagram.reset();
            datagram.setData(message.getBytes(), 0, message.length());
            connection.send(datagram);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

In this example, a new DatagramConnection is created using the Connector.open() method with the protocol and IP address/port number specified. The Datagram object is then created using the newDatagram() method of the connection, with the maximum length of the datagram. The send() method of the connection is called with the datagram to send the data to the specified IP address and port number.

The run() method is called when the Send command is pressed, and it gets the message from the text field, sets the data of the datagram with the message, and sends the datagram using the connection.

Note that this example is for demonstration purposes only, and the actual IP address and port number used in the DatagramConnection may differ depending on the network configuration.






Add Comment

* Required information
1000

Comments

No comments yet. Be the first!

Most Viewed Articles (in J2ME )

Latest Articles (in J2ME)