⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 client.java

📁 j2me学习 简单例子
💻 JAVA
字号:
package example.demowireless.socket;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import javax.microedition.io.ConnectionNotFoundException;
import javax.microedition.io.Connector;
import javax.microedition.io.SocketConnection;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.StringItem;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDletStateChangeException;

/**
 * <p>
 * J2ME Socket Demo -- Client
 * </p>
 * 
 * @author 刘光辉
 * @version 2009.02.04
 */
public class Client implements Runnable, CommandListener {

	private SocketDemo parent;
	private Display display;
	private Form f;
	private StringItem si;
	private TextField tf;
	private boolean stop;
	private Command sendCommand = new Command("Send", Command.ITEM, 1);
	private Command exitCommand = new Command("Exit", Command.EXIT, 1);
	InputStream is;
	OutputStream os;
	SocketConnection sc;
	Sender sender;
	public Client(SocketDemo m) {
	parent = m;
	display = Display.getDisplay(parent);
	f = new Form("Socket Client");
	si = new StringItem("Status:", " ");
	tf = new TextField("Send:", "", 30, TextField.ANY);
	f.append(si);
	f.append(tf);
	f.addCommand(exitCommand);
	f.addCommand(sendCommand);
	f.setCommandListener(this);
	display.setCurrent(f);
	}
	/**
	 * Start the client thread
	 */
	public void start() {
	Thread t = new Thread(this);
	t.start();
	}
	public void run() {
		try {
		sc = (SocketConnection) Connector.open("socket://localhost:5009");
			si.setText("Connected to server");
			is = sc.openInputStream();
			os = sc.openOutputStream();
			// Start the thread for sending messages - see Sender's main
			// comment for explanation
			sender = new Sender(os);
			// Loop forever, receiving data
			while (true) {
				StringBuffer sb = new StringBuffer();
				int c = 0;
				while (((c = is.read()) != '\n') && (c != -1)) {
					sb.append((char) c);
				}
				if (c == -1) {
					break;
				}
				// Display message to user
				si.setText("Message received - " + sb.toString());
			}
			stop();
			si.setText("Connection closed");
			f.removeCommand(sendCommand);
		} catch (ConnectionNotFoundException cnfe) {
			Alert a = new Alert("Client", "Please run Server MIDlet first",
					null, AlertType.ERROR);
			a.setTimeout(Alert.FOREVER);
			a.setCommandListener(this);
			display.setCurrent(a);
		} catch (IOException ioe) {
			if (!stop) {
				ioe.printStackTrace();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public void commandAction(Command c, Displayable s) {
		if (c == sendCommand && !parent.isPaused()) {
			sender.send(tf.getString());
		}
		if ((c == Alert.DISMISS_COMMAND) || (c == exitCommand)) {
			parent.notifyDestroyed();
			try {
				parent.destroyApp(true);
			} catch (MIDletStateChangeException e) {
				e.printStackTrace();
			}
		}
	}
		/**
		 * Close all open streams
		 */
		public void stop() {
			try {
				stop = true;
				if (sender != null) {
					sender.stop();
					if (is != null) {
						is.close();
						}
					if (os != null) {
						os.close();
						}
					if (sc != null) {
						sc.close();
						}
				} 
			}catch (IOException ioe) {
			}
		}
			

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -