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

📄 server.java

📁 J2ME socket通信示例代码
💻 JAVA
字号:
import java.io.*;

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

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("发送",Command.ITEM,1);
	private Command exitCommand=new Command("退出",Command.EXIT,1);
	InputStream is;
	OutputStream os;
	SocketConnection sc;
	ServerSocketConnection scn;
	Sender sender;
	
	public Server(SocketMidlet m){
		parent=m;
		display=Display.getDisplay(parent);
		f=new Form("Socket服务器");
		si=new StringItem("状态:","");
		tf=new TextField("发送:","",30,TextField.ANY);
		f.append(si);
		f.append(tf);
		f.addCommand(exitCommand);
		f.addCommand(sendCommand);
		f.setCommandListener(this);
		display.setCurrent(f);
	}
	
	public void start(){
		Thread t=new Thread(this);
		t.start();
	}
	public void run() {
		try{
			si.setText("等待客户端连接");
			scn=(ServerSocketConnection)Connector.open("socket://:50009");
			sc=(SocketConnection)scn.acceptAndOpen();
			si.setText("Connection accepted");
			is=sc.openInputStream();
			os=sc.openOutputStream();
			sender=new Sender(os);
			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("接收到的消息"+sb.toString());
			}
			stop();
			si.setText("连接关闭");
			f.removeCommand(sendCommand);
		}catch(IOException ioe){
			if(ioe.getMessage().equals("ServerSocket Open")){
				Alert a=new Alert("Server","端口50009可能已经被占用",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 d) {
		if(c==sendCommand && !parent.isPaused()){
			sender.send(tf.getString());
		}
		if(c==Alert.DISMISS_COMMAND || c==exitCommand){
			parent.notifyDestroyed();
			parent.destroyApp(true);
		}
	}
	
	public void stop(){
		try{
			stop=true;
			if(sender!=null){
				sender.stop();
			}
			if(is!=null){
				is.close();
			}
			if(os!=null){
				os.close();
			}
			if(scn!=null){
				scn.close();
			}
		}catch(IOException ioe){
			ioe.printStackTrace();
		}
	}
}

⌨️ 快捷键说明

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