采用socket连接J2ME的客户端和J2SE的服务端
运行后显示连接可以连接上,但不能够相互发送数据,请各位帮忙看看是怎么回事。
客户端的程序如下:
import javax.microedition.midlet.*;
import javax.microedition.io.*;
import javax.microedition.lcdui.*;
import java.io.*;
public class ScoketClient 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);
InputStream is;
OutputStream os;
SocketConnection sc;
public ScoketClient() {
display = Display.getDisplay(this);
f = new Form( "Socket Client ");
si = new StringItem( "Status: ", " ");
tf = new TextField( "Send: ", " ", 30, TextField.ANY);
f.append(si);
f.append(tf);
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() {
try {
sc = (SocketConnection) Connector.open( "socket://localhost:5000 ");
si.setText( "Connected to server ");
is = sc.openInputStream();
os = sc.openOutputStream();
// Start the thread for sending messages - see Sender 's main
// comment for explanation
// Loop forever, receiving data
while (true) {
StringBuffer sb = new StringBuffer();
int c = 0;
while (((c = is.read()) != '\n ') && (c != -1)) {
sb.append((char) c);
}
if (c == -1) {
break;
}
// Display message to user
si.setText( "Message received - " + sb.toString());
}
stop();
si.setText( "Connection closed ");
f.removeCommand(sendCommand);
} catch (Connection
NotFoundException cnfe) {
Alert a = new Alert( "Client ", "Please run Server MIDlet first ",
null, AlertType.ERROR);
a.setTimeout(Alert.FOREVER);
a.setCommandListener(this);
display.setCurrent(a);
} catch (
IOException ioe) {