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

📄 datagramserver.java

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

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

import java.io.*;

public class DatagramServer 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);


	private String address;
	DatagramConnection dc;

	public DatagramServer() {

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

		try {

            si.setText("Waiting for connection");
            dc = (DatagramConnection)
                  Connector.open("datagram://:5555");
            si.setText("Connection accepted");
            
            while (true) {
                Datagram dg = dc.newDatagram(100);
                dc.receive(dg);
                address = dg.getAddress();

                si.setText("Message received - " +
                                new String(dg.getData(), 0, dg.getLength()));

            }

        } catch (IOException ioe) {
            Alert a = new Alert("Server", "Port 5555 is already taken.",
                                null, AlertType.ERROR);
            a.setTimeout(Alert.FOREVER);
            a.setCommandListener(this);
            display.setCurrent(a);
        } catch (Exception e) {
            e.printStackTrace();
        }


	}

	public void stop() {
		
	}

	public void commandAction(Command c, Displayable d) {
		// TODO 自动生成方法存根
		if (c == sendCommand) {
			
			try {
                byte[] bytes =tf.getString().getBytes();
                Datagram dg = null;
                // Are we a sender thread for the client ? If so then there's
                // no address parameter
                if (address != null) {                    
                    dg = dc.newDatagram(bytes, bytes.length, address);
                }
                dc.send(dg);
            } catch (Exception ioe) {
                ioe.printStackTrace();
            }


		}
		if (c == exitCommand) {

			destroyApp(false);
			notifyDestroyed();
		}

	}

}

⌨️ 快捷键说明

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