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

📄 scoketclient.java

📁 《精通JAVA手机游戏与应用程序设计》随书光盘
💻 JAVA
字号:

package SocketExample;

import javax.microedition.midlet.*;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;

import java.io.*;

public class ScoketClient extends MIDlet implements Runnable, CommandListener {

	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;

	public ScoketClient() {
		display = Display.getDisplay(this);
		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);

		Thread t = new Thread(this);
		t.start();
	}

	
	protected void startApp() {
		// TODO 自动生成方法存根

	}

	protected void pauseApp() {
		// TODO 自动生成方法存根

	}

	
	protected void destroyApp(boolean arg0) {
		// TODO 自动生成方法存根

	}

	public void run() {

		try {
			sc = (SocketConnection) Connector.open("socket://localhost:5000");
			si.setText("Connected to server");
			is = sc.openInputStream();
			os = sc.openOutputStream();

			// Start the thread for sending messages - see Sender's main
			// comment for explanation

			// 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 d) {
		if (c == sendCommand) {
			try {
				os.write(tf.getString().getBytes());
				os.write("\r\n".getBytes());
			} catch (IOException ioe) {
				ioe.printStackTrace();
			}

		}
		if (c == exitCommand) {

			destroyApp(false);
			notifyDestroyed();
		}

	}

	public void stop() {
		try {
			stop = true;

			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 + -