j2me实现简单socket聊天(一)

2014-11-23 23:14:01 · 作者: · 浏览: 2
发此贴主要想结交java爱好者 j2se j2me j2ee 都可以

在此献丑了



server端
package demo;

import java.io.DataInputStream;
import java.io.DataOutputStream;

import javax.microedition.io.Connector;
import javax.microedition.io.ServerSocketConnection;
import javax.microedition.io.SocketConnection;
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.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;


public class server extends MIDlet implements CommandListener{
private Display display;
private Form form = new Form("服务器聊天");
private Command cmd = new Command("发送",Command.SCREEN,1);
private TextField tf_msg = new TextField("请输入:","",50,TextField.ANY);

private ServerSocketConnection ssc = null;
private SocketConnection sc = null;
private DataInputStream dis = null;
private DataOutputStream dos = null;
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {

}

protected void pauseApp() {

}

protected void startApp() throws MIDletStateChangeException {
display = Display.getDisplay(this);
display.setCurrent(form);
form.addCommand(cmd);
form.append(tf_msg);
form.setCommandListener(this);

try{
ssc = (ServerSocketConnection)Connector.open("socket://:8888");
sc = (SocketConnection)ssc.acceptAndOpen();
dos = sc.openDataOutputStream();
dis = sc.openDataInputStream();
new ChatThread().start();
}catch(Exception ex){
ex.printStackTrace();
}
}

public void commandAction(Command c, Displayable d) {
if(c == cmd){
try{
String str = tf_msg.getString();
dos.writeUTF(str);
form.append("server say:" + str + " ");
}catch(Exception ex){
ex.printStackTrace();
}
}
}

class ChatThread extends Thread{
public void run(){
while(true){
try{

String str = dis.readUTF();
form.append("client say:" + str + " ");
}catch(Exception ex){
ex.printStackTrace();
}
}
}
}

}



client端

package demo;

import java.io.DataInputStream;
import java.io.DataOutputStream;

import javax.microedition.io.Connector;
import javax.microedition.io.SocketConnection;
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.TextField;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class client extends MIDlet implements CommandListener{