|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Java的桌面程序开发在java程序员里通常叫swing开发,主要用的swing包里的类开发的,也就是通常说的c/s架构开发编程|收集 本文形貌了在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 +="
";
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,增添一个网页来对客户真个哀求做出呼应就好了,实在跟一样平常的网页哀求没有多年夜区分,很复杂吧!!
下面的Socket客户端毗连程序就应当算是竣工了,上面是搭建服务器端对客户真个毗连举行呼应。创建服务器端程序,只必要有以下代码便可:
SocketConnection
<P><Pclass=code> 上面仍是从实例动手讲一下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会呈现变更,以是最初仍是接纳由客户端自动发送信息的情势。感到有点扯远了,仍是回到正题吧。
客户端在创建Socket毗连乐成后,便可向服务器发送信息,以下是发送信息模块
protected boolean sendData(byte abyte0[])//本人交换[]
{
System.out.println("send :" + bConnected);
// 判别毗连情形
if(!bConnected)
return false;
OutputStream outputstream = null;
try
{
outputstream = conServer.openOutputStream();
// 写信息到outputstream中
outputstream.write(abyte0);
// 我的了解是强迫送出一切已写了的信息
outputstream.flush();
outputstream.close();
}
catch(Exception exception)
{
System.out.println("Send Data error");
bConnected = false;
try
{
if(outputstream != null)
outputstream.close();
// 挪用断开毗连的函数
disconnect();
}
catch(Exception exception1) { }
return false;
}
return true;
}
上面是读取服务器呼应的信息,其他的就纷歧一说了,把outputstream改成inputstream,然后利用inputstream的read办法就能够了。
..............
inputstream = conServer.openInputStream();
..............
以上就是J2me开辟次要利用的收集毗连办法,包含http和socket,其他另有datagram之类的,谁人由于我没有效过,以是就欠好胡说了,基础上以上两种来做收集开辟就充足了,怎样,是否是很复杂呀。以上意见和概念属于本人鄙见,若有毛病,请妙手指出。
微软什么都提供了。你可以试想一下,如果你是新手,你是希望你点一下按钮程序就能运行那,还是想自己一点一点的组织结构,然后打包发部,调错再打包...... |
|