I wrote a simple midlet which turns my Phone into simple web server. To keep the code simple, I removed the additional GPS capabilities. Currently the web server listens to port 8000 and repsonds "Hello, I am Kumar Mettu's Phone. Thanks for Visiting" for all requests that are sent to this tiny web server. Note that this code is tested only on Motorola i88s with Nextel Total Connect Service.
Here is the code for the tiny web server:
001 import java.io.IOException;
002 import java.io.InputStream;
003 import java.io.PrintStream;
004
005 import javax.microedition.io.Connector;
006 import javax.microedition.io.StreamConnection;
007 import javax.microedition.io.StreamConnectionNotifier;
008 import javax.microedition.lcdui.Display;
009 import javax.microedition.midlet.MIDlet;
010
011 /**
012 * MIDlet working as simple personal WebServer.
013 * Currently this serves simple HTTP GET operation.
014 *
015 * @author Kumar Mettu
016 * @version 0.61
017 */
018
019 public class WebServer extends MIDlet {
020
021 private Display display;
022
023 StreamConnectionNotifier scn = null;
024
025 /**
026 * Default constructor.
027 */
028 public WebServer() {
029 display = Display.getDisplay(this);
030 }
031
032 /**
033 * This will be invoked when we start the MIDlet
034 */
035 public void startApp() {
036 try {
037 scn =(StreamConnectionNotifier)Connector.open("serversocket://:8000");
038 while (true) {
039 StreamConnection sc = (StreamConnection)scn.acceptAndOpen();
040
041 // service the connection in a separate thread
042 Connection c = new Connection(sc);
043 c.start();
044 }
045
046
047 } catch (IOException e) {
048 //Handle Exceptions any other way you like.
049 //No-op
050 }
051 }
052
053 /**
054 * Pause, discontinue ....
055 */
056 public void pauseApp() {
057 try {
058 if (scn != null)
059 scn.close();
060 } catch(Exception e) {
061 }
062
063 }
064
065 /**
066 * Destroy. Cleanup everything.
067 */
068 public void destroyApp(boolean unconditional) {
069 try {
070 if (scn != null)
071 scn.close();
072 } catch(Exception e) {
073 }
074 }
075
076 /**
077 * Thread to handle client request.
078 */
079 class Connection extends Thread
080 {
081
082 public Connection(StreamConnection c) {
083 client = c;
084 }
085
086 /**
087 * Handles client request.
088 */
089 public void run() {
090 InputStream s = null;
091 PrintStream out = null;
092 StringBuffer b = new StringBuffer();
093 try {
094
095 s = client.openInputStream();
096
097 //Ignore reading request to reduce the amount of data
098 //transfered to Phone.
099 /*int ch;
100 while((ch = s.read()) != -1) {
101 b.append((char) ch);
102 }
103 System.out.println(b.toString());*/
104
105 out = new PrintStream(client.openOutputStream());
106 String response =
107 "<HTML>"+
108 "<HEAD>"+
109 "<TITLE>Kumar's Location</TITLE>"+
110 "</HEAD>"+
111 "<BODY>Hello, I am Kumar Mettu's Phone. "+
112 "Thanks for Visiting.</BODY>"+
113 "</HTML>";
114 out.println("HTTP/1.0 200 OK\n");
115 out.println(response);
116
117 }
118 catch (Throwable ioe) {
119 //Handle Exceptions any other way you like.
120 //No-op
121 }
122 finally {
123 try {
124 if (s != null)
125 s.close();
126 if (out != null)
127 out.close();
128 if (client != null)
129 client.close();
130 }
131 catch (IOException ioee) {
132 //Handle Exceptions any other way you like.
133 //No-op
134 }
135 }
136 }
137
138 private StreamConnection client;
139 }
140
141 }
142
|
I know there is no business value for this web server. But hey turning phone into a web server and viewing it serve web pages to browser is fun :-)