FileDocCategorySizeDatePackage
TCPTimeServer.javaAPI DocExample1661Thu Feb 16 11:57:58 GMT 2006None

TCPTimeServer.java

import javax.microedition.midlet.*;
import javax.microedition.io.*;
import java.io.*;
import java.util.Date;

public class TCPTimeServer extends MIDlet {    

  private ServerSocketConnection server;
  // The time protocol sets the epoch at 1900,
  // the java Date class at 1970. This number 
  // converts between them.   
  private long differenceBetweenEpochs = 2208988800L;
  
  protected void startApp() {
    try {
      server = (ServerSocketConnection) Connector.open("socket://:37");
      Runnable r = new Runnable() {
        public void run() {
          while (true) {
            try {
              StreamConnection conn = server.acceptAndOpen();
              Date now = new Date();
              long msSince1970 = now.getTime();
              long secondsSince1900 = msSince1970/1000L + differenceBetweenEpochs;
              DataOutputStream out = conn.openDataOutputStream();
              // write the low order four bytes
              out.write( (int) ((secondsSince1900 >>> 24) & 0xFFL));
              out.write( (int) ((secondsSince1900 >>> 16) & 0xFFL));
              out.write( (int) ((secondsSince1900 >>> 8) & 0xFFL));
              out.write( (int) (secondsSince1900 & 0xFFL));
              out.close();
            }
            catch (IOException ex) {
            }
          } 
        }
      };
      Thread t = new Thread(r);
      t.start();
    }
    catch (IOException ex) {
      // not much we can do about this here
    }
  }

  protected void pauseApp() {}

  protected void destroyApp(boolean unconditional) {
    try {
        server.close();
    }
    catch (IOException ex) {
        // We tried;
    }
  }
}