Home | Back
mRPCxe string communication in Moblie Version
Monday, 12 June 2006
ผมได้ทดลองเขียนโปรแกรม Java บนมือถือ โดยได้มีการติดต่อสื่อสารกับ Server ผ่านทาง GPRS ซึ่งจะมีการเขียนโปรแกรมผ่าน Socket ผมจึงได้นำโปรแกรมส่ง string ที่ผมเคยเขียนไว้คือ mRPCxe มาแก้ไขให้เป็น Mobile version จึงนำมา post เก็บไว้
package mRPCxeMB;
import javax.microedition.io.*;
import java.io.*;
/**
*
* @author moo
*/
public class mRPCxeMB {
/** Creates a new instance of mRPCxeMB */
public mRPCxeMB() {
}
public static String read(DataInputStream in, DataOutputStream out) {
String dat="";
try{
while(true){
String buf = DataInputStream.readUTF(in);
String header = buf.substring(0, 1);
String body = buf.substring(1);
dat=dat+body;
if(header.equals("a")==true){
out.writeUTF("x");
continue;
}else if(header.equals("z")==true){
break;
}
}
}catch(Exception e){ e.printStackTrace(); }
return dat;
}
public static void write(DataInputStream in, DataOutputStream out, String str) {
int wsize=1000;
try{
int countPacket=(int)(java.lang.Math.ceil((float)str.length()/(float)wsize));
int pos=0;
String buf;
while(true){
countPacket--;
if(countPacket>0){
buf=str.substring(pos, pos+wsize);
pos=pos+wsize;
out.writeUTF("a"+buf);
String res = DataInputStream.readUTF(in);
if(res.equals("x")) continue;
}else{
buf=str.substring(pos, str.length());
out.writeUTF("z"+buf);
break;
}
}
}catch(Exception e){ e.printStackTrace(); }
}
public static String ClientSend(String tx,String host,String port) {
String ret="";
try{
StreamConnection s = (StreamConnection)Connector.open("socket://"+host+":"+port);
DataInputStream in = s.openDataInputStream();
DataOutputStream out = s.openDataOutputStream();
write(in, out, tx);
ret = read(in, out);
return ret;
}catch(Exception e){ e.printStackTrace(); }
return ret;
}
}