仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 526|回复: 8
打印 上一主题 下一主题

[学习教程] JAVA编程:实例剖析J2ME收集编程的两种办法

[复制链接]
只想知道 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:09:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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之类的,谁人由于我没有效过,以是就欠好胡说了,基础上以上两种来做收集开辟就充足了,怎样,是否是很复杂呀。以上意见和概念属于本人鄙见,若有毛病,请妙手指出。

微软什么都提供了。你可以试想一下,如果你是新手,你是希望你点一下按钮程序就能运行那,还是想自己一点一点的组织结构,然后打包发部,调错再打包......
海妖 该用户已被删除
沙发
发表于 2015-1-20 15:11:05 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
活着的死人 该用户已被删除
板凳
发表于 2015-1-29 12:00:52 | 只看该作者
科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
灵魂腐蚀 该用户已被删除
地板
发表于 2015-2-2 22:10:22 来自手机 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
深爱那片海 该用户已被删除
5#
发表于 2015-2-8 11:43:11 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
老尸 该用户已被删除
6#
发表于 2015-2-25 10:42:17 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
柔情似水 该用户已被删除
7#
发表于 2015-3-7 19:35:49 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
山那边是海 该用户已被删除
8#
发表于 2015-3-15 12:18:28 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
飘灵儿 该用户已被删除
9#
发表于 2015-3-22 00:35:23 | 只看该作者
是一种突破用户端机器环境和CPU
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 01:12

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表