wireless toolkit code
//客户端移动的j2me代码
public class TCPConnectSend extends MIDlet implements CommandListener {
Display display;
public TCPConnectSend0 () {
frm = new Form ("TCPConnectSend0");
sendCmd = new Command("Send",Command.SCREEN, 1);
frm.addCommand(sendCmd);
frm.setCommandListener(this);
text = new TextField("text:","",40,TextField.ANY);
frm.append(text);
}
public void startApp() {
if(display==null) {
display = Display.getDisplay (this);
}
display.setCurrent(frm);
try {
conn=(SocketConnection)Connector.open("socket://|ip-address|:80");//socket connection to the server
outs=conn.openOutputStream();
} catch(IOException e) { }
}
public void pauseApp() { }
public void destroyApp(boolean unconditional) { }
public void commandAction(Command c, Displayable s) {
if(c==sendCmd) {
try {
outs.write((text.getString()+"\n").getBytes());
} catch(IOException e) {}
} else { }
}
}
server code
//这会收到来自客户端的套接字请求
class TCPServer
{
public static void main(String argv[]) throws Exception
{
try {
ServerSocket server = new ServerSocket(80);
System.out.println("ip address : "+InetAddress.getLocalHost());
System.out.println("waiting for connection");
Socket s1 = server.accept();
System.out.println("connection established");
BufferedReader br = new BufferedReader(new
InputStreamReader(s1.getInputStream()));
while (true) {
String str1 = br.readLine();
System.out.println("client says :" +str1);
if (str1.equals("quit"))
break;
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
//运行此代码后我在我的诺基亚手机中获得了一个java安全例外任何其他端口没有在诺基亚手机中没有响应
答案 0 :(得分:1)
答案 1 :(得分:0)
您应该在客户端代码中添加服务器的公共IP。
(SocketConnection)Connection.open( "socket://105.225.251.58" + ":" + "port" );
答案 2 :(得分:0)
请注意,要使用80,443,8080等特权端口以及1000以下的任何特权端口,您需要一个真实电话的代码签名证书(例如Thawte)。
否则,仍然是更高的非特权端口,如8000等