/*
* @(#)WMABridgeAPIExample.java 1.6 03/10/29
*
* Copyright (c) 2000-2003 Sun Microsystems, Inc. All rights reserved.
* PROPRIETARY/CONFIDENTIAL
* Use is subject to license terms
*/
import java.util.*;
import java.io.*;
import javax.swing.JOptionPane;
import com.sun.kvem.midp.io.j2se.wma.client.WMAClient;
import com.sun.kvem.midp.io.j2se.wma.Message;
/*
* This class shows an example usage of the Wireless Toolkit WMA Bridge API
* for connecting J2SE clients to the toolkit's messaging environment.
*
* Use the build and run scripts in the same directory to build and run the
* example.
*
* See the WMA Bridge API documentation included with the Toolkit for more
* information on using the API.
*/
public class WMABridgeAPIExample implements WMAClient.MessageListener {
public static int DEFAULT_SMS_PORT = 50000;
public static int DEFAULT_CBS_MESS_ID = 50001;
private WMAClient wtkClient;
private BufferedReader inputReader;
private int smsPort = DEFAULT_SMS_PORT;
private int cbsMessID = DEFAULT_CBS_MESS_ID;
public WMABridgeAPIExample() throws Exception {
// null argument for the phone number - we'll be assigned one.
wtkClient = new WMAClient(null, WMAClient.SEND_AND_RECEIVE);
wtkClient.connect();
wtkClient.setMessageListener(this);
// connect the standard input to our reader
inputReader = new BufferedReader(new InputStreamReader(System.in));
}
/**
* shows help on using this utility
*/
private void displayHelp() {
System.out.println("Send and receive SMS and CBS messages " +
"to and from Wireless Toolkit emulators.\n" +
"Commands:\n" +
" sms <phoneNumber> <message> : send sms text message to phoneNumber\n" +
" cbs <message> : send cbs text message broadcast\n" +
" getPort : display the port number to which sms is sent\n"+
" getMessageID : display the message ID on which cbs is sent\n"+
" setPort <port> : set the port to which sms is sent\n" +
" setMessageID <messID> : set the message ID on which cbs is sent\n" +
" help : this help screen\n" +
" quit : exit the program");
}
/**
* show the sms port
*/
private void displayPort() {
System.out.println("Using port " + smsPort + " for sms messages.");
}
/**
* show the cbs message ID
*/
private void displayMessageID() {
System.out.println("Using message ID " + cbsMessID + " for cbs messages.");
}
/**
* handle the setPort command
*/
private void handleSetPort(String argString) {
if (argString.length() > 0) {
try {
int port = Integer.parseInt(argString);
if (port >= 0 && port <= 65535) {
smsPort = port;
displayPort();
} else {
System.out.println("Port must be in the range 0 to 65535.");
}
} catch (NumberFormatException nfe) {
System.out.println("Invalid number format");
}
} else {
System.out.println("setPort requires a port number.");
}
}
/**
* handle the setMessageID command
*/
private void handleSetMessageID(String argString) {
if (argString.length() > 0) {
try {
int messID = Integer.parseInt(argString);
if (messID >= 0 && messID <= 65535) {
cbsMessID = messID;
displayMessageID();
} else {
System.out.println("Message ID must be in the range 0 to 65535.");
}
} catch (NumberFormatException nfe) {
System.out.println("Invalid number format");
}
} else {
System.out.println("setMessageID requires a message ID number.");
}
}
/**
* handle the sms command
*/
private void handleSMS(String argString) {
int spacePos = argString.indexOf(' ');
String toPhoneNumber;
String messageStr;
if (spacePos > 0) {
toPhoneNumber = argString.substring(0, spacePos);
messageStr = argString.substring(spacePos+1).trim();
} else {
System.out.println("sms requires a phone number and a message.");
return;
}
Message message = new Message(messageStr);
message.setToAddress("sms://" + toPhoneNumber + ":" + smsPort);
message.setFromAddress("sms://" + wtkClient.getPhoneNumber());
try {
wtkClient.send(message);
System.out.println("Sent sms.");
} catch (Exception e) {
System.err.println("Caught exception sending sms: ");
e.printStackTrace();
}
}
/**
* handle the cbs command
*/
private void handleCBS(String argString) {
if (argString.length() > 0) {
Message message = new Message(argString);
message.setToAddress("cbs://:" + cbsMessID);
try {
wtkClient.send(message);
System.out.println("Sent cbs.");
} catch (Exception e) {
System.err.println("Caught exception sending cbs: ");
e.printStackTrace();
}
} else {
System.out.println("cbs requires a message.");
}
}
/**
* get a command and perform it
* returns false when it's time to quit
*/
private boolean processNextCommand() throws IOException {
System.out.print("Command: ");
String commandLine = inputReader.readLine();
if (commandLine==null || commandLine.length()==0) {
return true;
}
commandLine = commandLine.trim();
int spacePos = commandLine.indexOf(' ');
String firstWord;
String args;
if (spacePos > 0) { // more than 1 word
firstWord = commandLine.substring(0, spacePos);
args = commandLine.substring(spacePos+1).trim();
} else { // only 1 word
firstWord = commandLine;
args = "";
}
// perform the appropriate action for this command
if (firstWord.equalsIgnoreCase("getport")) {
displayPort();
} else if (firstWord.equalsIgnoreCase("getmessageid")) {
displayMessageID();
} else if (firstWord.equalsIgnoreCase("help")) {
displayHelp();
} else if (firstWord.equalsIgnoreCase("quit") ||
firstWord.equalsIgnoreCase("exit")) {
return false;
} else if (firstWord.equalsIgnoreCase("setport")) {
handleSetPort(args);
} else if (firstWord.equalsIgnoreCase("setmessageid")) {
handleSetMessageID(args);
} else if (firstWord.equalsIgnoreCase("sms")) {
handleSMS(args);
} else if (firstWord.equalsIgnoreCase("cbs")) {
handleCBS(args);
}
return true;
}
/**
* the main loop to drive the program
*/
public void driverLoop() throws Exception {
System.out.println("Running WMABridgeAPIExample. Phone number is " +
wtkClient.getPhoneNumber());
displayHelp();
displayPort();
displayMessageID();
while (true) {
try {
if (processNextCommand() == false) {
break;
}
} catch (Exception e) {
System.err.println("Exception caught: " + e);
e.printStackTrace();
}
}
wtkClient.setMessageListener(null);
wtkClient.unregisterFromS
评论4
最新资源