如上图,先运行服务器端程序,然后再运行客户端的程序,可以通过的屏幕上编辑信息然后发送出来,随后在两个程序的屏幕上都会显示接收到的信息。当客户端的程序运行以后,将自动申请连接服务器,连接成功以后,服务端的程序将显示“Connection accepted”的提示信息。
1: import java.io.InputStream;
2: import java.io.OutputStream;
3:
4: import javax.microedition.io.Connector;
5: import javax.microedition.io.ServerSocketConnection;
6: import javax.microedition.io.SocketConnection;
7: import javax.microedition.lcdui.Alert;
8: import javax.microedition.lcdui.AlertType;
9: import javax.microedition.lcdui.Command;
10: import javax.microedition.lcdui.CommandListener;
11: import javax.microedition.lcdui.Display;
12: import javax.microedition.lcdui.Displayable;
13: import javax.microedition.lcdui.Form;
14: import javax.microedition.lcdui.StringItem;
15: import javax.microedition.lcdui.TextField;
16: import javax.microedition.midlet.MIDlet;
17: import javax.microedition.midlet.MIDletStateChangeException;
18:
19: public class SocketServer extends MIDlet implements Runnable, CommandListener {
20:
21: private Command sendCommand = new Command("Send", Command.ITEM, 1);
22: private Command exitCommand = new Command("Exit", Command.EXIT, 1);
23: private Display display;
24: private Form f;
25: private StringItem si;
26: private TextField tf;
27: private ServerSocketConnection scn;
28: private SocketConnection sc;
29: private InputStream is;
30: private OutputStream os;
31: private boolean stop;
32:
33: public SocketServer() {
34: display = Display.getDisplay(this);
35: f = new Form("Socket Server");
36: si = new StringItem("Status: ", "");
37: tf = new TextField("send:", "", 30, TextField.ANY);
38: f.append(si);
39: f.append(tf);
40: f.addCommand(exitCommand);
41: f.setCommandListener(this);
42: display.setCurrent(f);
43:
44: Thread t = new Thread(this);
45: t.start();
46: }
47:
48: protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
49: // TODO Auto-generated method stub
50:
51: }
52:
53: protected void pauseApp() {
54: // TODO Auto-generated method stub
55:
56: }
57:
58: protected void startApp() throws MIDletStateChangeException {
59: // TODO Auto-generated method stub
60:
61: }
62:
63: public void run() {
64: try {
65:
66: si.setText("Waiting for connection");
67: // 创建一个服务器的ServerSocketConnection连接
68: scn = (ServerSocketConnection) Connector.open("socket://:5000");
69: // 等待一个连接
70: sc = (SocketConnection) scn.acceptAndOpen();
71: System.out.println("1");
72: // 设置提示信息
73: si.setText("Connection accepted");
74: is = sc.openInputStream();
75: os = sc.openOutputStream();
76: // 连接完成以后允许发送
77: f.addCommand(sendCommand);
78: // 读取客户端发送来的信息
79: while (true) {
80: StringBuffer sb = new StringBuffer();
81: int c = 0;
82: // 读取数据
83: while (((c = is.read()) != '\n' && c != -1)) {
84: sb.append((char) c);
85: }
86: // 读取数据不成功,正常情况一直在连接状态流一直没读完,不会有"-1"
87: if (c == -1) {
88: break;
89: }
90: // 显示客户端反送过来的信息
91: si.setText("Message received - " + sb.toString());
92: }
93: // stop();
94: si.setText("Connection is closed");
95: f.removeCommand(sendCommand);// 连接结束,则不显示发送按钮
96: } catch (Exception e) {
97: if (e.getMessage().equals("ServerSocket Open")) {
98: // 提示端口已经被占用
99: Alert a = new Alert("Server", "Port 5000 is already taken.",
100: null, AlertType.ERROR);
101: a.setTimeout(Alert.FOREVER);
102: a.setCommandListener(this);
103: display.setCurrent(a);
104: } else {
105: if (!stop) {
106: e.printStackTrace();
107: }
108: }
109: }
110: }
111:
112: // 发送信息
113: public void commandAction(Command c, Displayable d) {
114: if (c == sendCommand) {// 按字节发送信息
115: try {
116: os.write(tf.getString().getBytes());
117: os.write("\r\n".getBytes());
118: } catch (Exception e) {
119: e.printStackTrace();
120: }
121: }
122: if (c == exitCommand) {
123: try {
124: destroyApp(false);
125: notifyDestroyed();
126: } catch (MIDletStateChangeException e) {
127: e.printStackTrace();
128: }
129: }
130: }
131:
132: // 释放资源
133: private void stop() {
134: try {
135: stop = true;
136: if (is != null) {
137: is.close();
138: }
139: if (os != null) {
140: os.close();
141: }
142: if (sc != null) {
143: sc.close();
144: }
145: if (scn != null) {
146: scn.close();
147: }
148: } catch (Exception e) {
149: // TODO: handle exception
150: }
151: }
152: }
153:
1: import java.io.IOException;
2: import java.io.InputStream;
3: import java.io.OutputStream;
4:
5: import javax.microedition.io.ConnectionNotFoundException;
6: import javax.microedition.io.Connector;
7: import javax.microedition.io.SocketConnection;
8: import javax.microedition.lcdui.Alert;
9: import javax.microedition.lcdui.AlertType;
10: import javax.microedition.lcdui.Command;
11: import javax.microedition.lcdui.CommandListener;
12: import javax.microedition.lcdui.Display;
13: import javax.microedition.lcdui.Displayable;
14: import javax.microedition.lcdui.Form;
15: import javax.microedition.lcdui.StringItem;
16: import javax.microedition.lcdui.TextField;
17: import javax.microedition.midlet.MIDlet;
padding-bottom: 0px !important; line-hei
分享到:
相关推荐
J2ME MIDP 手机编程实例集源码,包括了UDP Socket方面的编程技巧,还有一更简单的基础实例,主要都是一些前两年的手机游戏编程资料,现在放上来分享给大家,对于打基础还是有用的。
本文将讲述如何应用J2ME平台中的通用联网框架开发联网的应用程序。 首先,必须说明一点:MIDP中规定,任何移动信息设备都必须提供通过http协议的支持,而像其他的通信方式例如socket是设备相关的。有些手机会...
nokia提供的移动开发中端到端的例子
这是本人制作的一个演示服务器与客户端聊天的实例,是用MIDP技术来做的。读者下载后,只要稍加修改,就可以实现类似于QQ中的群聊功能。
简介: <br>MSN手机客户端是一款能够在支持J2ME(MIDP 2.0)的手机上安装运行的兼容MSN的即时通讯软件。 <br>主要特点有: <br>• 具备几乎MSN桌面版的所有基本功能 <br>• 纯粹的socket连接,通讯速度...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 ...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 ...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 ...
J2ME优化压缩PNG文件 4个目标文件 内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理 这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失...
J2ME优化压缩PNG文件 4个目标文件 内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理 这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...