WAP之家:为您提供最全最新的WAP技术,CP.SP.3G等行业资讯。 WAP之家交流论坛全新开放 点击进入>>
WAP资讯 | 3G动态 | SP动态 | 运营商动态 | 内容商动态 | 制造商动态 | 论坛讨论>> 每次自动访问
WAP技术 | WAP源码 | 手机编程 | 手机源码 | 无线技术 | J2ME技术 | 手机软件 添加到收藏夹
IVR技术 | SP资料 | SMS MMS技术 | 商业方案 | IVR下载 | 书籍教程 | 工具软件 语言:繁體中文

WAP之家技术文章J2ME技术程序开发j2me网络实战指南

j2me网络实战指南
作者:转载  来源:转载  发布时间:2005-9-6 10:06:54
本文描述了在J2me中开发主要使用的网络连接方法,分别详细介绍了使用http和socket两种方法。

网络实战第一部分:HttpConnection


首先我们先来看一个简单的例子吧:

主要用到的java包:javax.microedition.io.*;

public String requestGET(String URLString,String URL) throws IOException{
// =============================================================
// URLString是HTTP地址,URL为后面的参数
// 这里的例子是发送用的用户名和密码到服务器端进行用户验证
// 比如 String URLString = "http://192.168.0.1:8080/login.jsp"
// String URL = "?Name="+this.txtName+"&Pass="+this.txtPass
// =============================================================

HttpConnection hpc = null;
DataInputStream dis = null;

boolean newline = false;

String content = "";
try{
// ===========================================================
// 建立连接
// ===========================================================
hpc = (HttpConnection)Connector.open(URLString+URL);
hpc.setRequestMethod(HttpConnection.GET);

dis = new DataInputStream(hpc.openInputStream());

int character;
// ===========================================================
// 读取返回的HTTP内容
// ===========================================================
while((character = dis.read()) != -1){
if((char)character == '\\'){
newline = true;
continue;
}
else{
if((char)character =='n'&& newline){
content +="\n";
newline = false;
}
else if(newline){
content +="\\" +(char)character;
newline = false;
}
else{
content +=(char)character;
newline = false;
}
}
}
}
catch(IOException e){
System.out.print("ERROR:"+e);
}
finally{
if(hpc != null){
hpc.close();
hpc = null;
}
if(dis != null){
dis.close();
}
}
// ===============================================================
// 由于内容可能有中文,所以在接受到信息后要对内容进行字符集的转换
// ===============================================================
content = (unicodeTogb2312(content)).trim();
return content;
}

public static String unicodeTogb2312(String s){
if (s==null){ return ""; }
if (s.equals("")){ return s; }
try{
return new String(s.getBytes("ISO8859_1"),"gb2312");
}
catch(Exception uee){
return s;
}
}

以上就是一个简单的HTTP连接并且从服务器获取响应信息的例子,应该很简单了吧。客户端就是上面那个样子,服务器端只要配置好IIS,增加一个网页来对客户端的请求做出响应就行了,其实跟一般的网页请求没有多大区别,很简单吧!!

网络实战第二部分:SocketConnection


下面还是从实例入手讲一下J2me的Socket编程。
程序首先打开以IP地址为192.168.0.1:6666的Socket连接,如果连接失败则抛出异常,程序结束。如果Socket连接成功,则继续。

  
public boolean SocketConn(String s) throws IOException{
// =============================================================
// s是Socket连接字符串
// 这里的例子是发送用的用户名和密码到服务器端进行用户验证
// 比如 String s = "socket://192.168.0.1:6666"
// =============================================================

private StreamConnection conServer;
private String strServerAddr;
private boolean bConnected;

conServer = null;
strServerAddr = s; // 连接地址
bConnected = false; // 连接状态

try
{
conServer = (StreamConnection)Connector.open(strServerAddr);
}
catch(Exception exception)
{
System.out.println("Connect server error");
bConnected = false;
return false;
}
bConnected = true;
System.out.println("connect ok!");
return true;
}

上面的Socket客户端连接程序就应该算是完工了,下面是搭建服务器端对客户端的连接进行响应。
建立服务器端程序,只需要有以下代码即可:

..........
try{
// 建立端口为6666的socket服务器
ServerSocketConnection SocketSer;
SocketSer = (ServerSocketConnection)Connector.open("socket://:6666");

// 等待客户端连接
SocketConnection sc;
// 如有连接,则新增一个线程对连接进行处理
sc = (SocketConnection)SocketSer.acceptAndOpen();
..........
while(true){
// 对sc的InputStream和OutPutStream进行处理

}
}
..........

在这里需要说明一下我的看法,手机通过Socket连接上服务器后,由于我用的是中国移动的号码,所以跑的是GPRS通道,我所建立的服务器连接所获得的客户端IP只是一个虚拟IP,而这个IP估计是以用户当前最近的移动机站的编码通过一些变化而产生的,所以当用户不停的移动的时候,IP也许会发生变化(这里我就不太清楚了),有兴趣的可以去看看“移动虚拟IP技术”相关的报道。本来我以前的想法是用户连接到服务器后只要IP不变就可以实现服务器向客户端广播数据,但是这个IP并非是长连接,服务器在广播数据的时候也许会有很大部分的客户端的IP会

[1] [2]  下一页

[] [返回上一页] [打 印]
文章评论

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容:

         (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码