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

📄 server.java

📁 Networki demo is MIDlet written by WTK
💻 JAVA
字号:
/* * * Copyright (c) 2007, Sun Microsystems, Inc. * * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * *  * Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. *  * Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. *  * Neither the name of Sun Microsystems nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */package socket;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import javax.microedition.io.Connector;import javax.microedition.io.ServerSocketConnection;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;public class Server implements Runnable, CommandListener {    private SocketMIDlet 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;    ServerSocketConnection scn;    Sender sender;    private int port;    public Server(SocketMIDlet m, int p) {	parent = m;	port = p;	display = Display.getDisplay(parent);	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);    }    public void start() {	Thread t = new Thread(this);	t.start();    }    public void run() {	String portString = String.valueOf(port);	try {	    si.setText("Waiting for connection on port "+portString);	    scn = (ServerSocketConnection) Connector.open("socket://:"		    + portString);	    // 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 " + portString			+ " 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 commandAction(Command c, Displayable s) {	if ((c == sendCommand) && !parent.isPaused()) {	    sender.send(tf.getString());	}	if ((c == Alert.DISMISS_COMMAND) || (c == exitCommand)) {	    parent.notifyDestroyed();	    parent.destroyApp(true);	}    }    /**         * Close all open streams         */    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) {	}    }}

⌨️ 快捷键说明

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