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

📄 socketserver.java

📁 《精通JAVA手机游戏与应用程序设计》随书光盘
💻 JAVA
字号:
/*
 * 创建日期 2004-12-19
 * 
 * TODO 要更改此生成的文件的模板,请转至 窗口 - 首选项 - Java - 代码样式 - 代码模板
 */
package SocketExample;

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

import java.io.*;

public class SocketServer 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;

	ServerSocketConnection scn;

	public SocketServer() {

		display = Display.getDisplay(this);
		f = new Form("Socket Server");
		si = new StringItem("Status:", " ");
		tf = new TextField("Send:", "", 30, TextField.ANY);
		f.append(si);
		f.append(tf);
		f.addCommand(exitCommand);
		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() {
		// TODO 自动生成方法存根

		try {
			si.setText("Waiting for connection");
			scn = (ServerSocketConnection) Connector.open("socket://:5000");

			// Wait for a connection.
			sc = (SocketConnection) scn.acceptAndOpen();
			si.setText("Connection accepted");
			is = sc.openInputStream();
			os = sc.openOutputStream();
			//  sender = new Sender(os);

			// Allow sending of messages only after Sender is created
			f.addCommand(sendCommand);

			while (true) {
				StringBuffer sb = new StringBuffer();
				int c = 0;

				while (((c = is.read()) != '\n') && (c != -1)) {
					sb.append((char) c);
				}

				if (c == -1) {
					break;
				}
				si.setText("Message received - " + sb.toString());
			}
			// stop();
			si.setText("Connection is closed");
			f.removeCommand(sendCommand);
		} catch (IOException ioe) {
			if (ioe.getMessage().equals("ServerSocket Open")) {
				Alert a = new Alert("Server", "Port 5000 is already taken.",
						null, AlertType.ERROR);
				a.setTimeout(Alert.FOREVER);
				a.setCommandListener(this);
				display.setCurrent(a);
			} else {
				if (!stop) {
					ioe.printStackTrace();
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

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

			if (is != null) {
				is.close();
			}

			if (os != null) {
				os.close();
			}

			if (sc != null) {
				sc.close();
			}

			if (scn != null) {
				scn.close();
			}
		} catch (IOException ioe) {
		}
	}

	public void commandAction(Command c, Displayable d) {
		// TODO 自动生成方法存根
		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();
		}

	}

}

⌨️ 快捷键说明

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