📄 server.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 + -