网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  windows ce pocketpc上的java编程(1)     
  文章作者:未知  文章来源:水木森林  
  查看:86次  录入:管理员--2007-11-17  
 
  网络联机的过程介绍
  先介绍一下基本的java网络程序联机的原理,如图所述在server端要先开启一个连接阜准备接收client的联机,当一收到client端的联机的时候便可以将server的位置及连接(socket)传给client然后client便取联机的信息再将资料及 socket一起透过网络(socket记载着ip address及port)将讯息送到server端,就可以开始和作交易。
  
 windows ce pocketpc上的java编程(1)(图一)

  
图client-server联机示意图

  
  先撰写一个简单的server。
  
  import java.io.*;
  import java.net.*;
  public class netserver {
  string clientmessage;
  serversocket ssocket;
  //宣告使用serversocket的类别
  socket csocket;
  //取得client联机封包的socket,各为别想太多就是client端的联机
  public netserver() {
  try {
  ssocket = new serversocket(900,200);
  //开启port 900,并限定client联机的数量为200,若开启正常则开始等待client端的联机
  csocket = ssocket.accept();
  //client端已经联机上了取得socket
  system.out.println("取得一个client端从 "+csocket.getinetaddress().gethostaddress());
  //显示出client ip
  }
  catch(ioexception ioe) {
  system.out.println("开启server异常!!!");
  }
  }
  public static void main(string[] args) {
  new netserver();
  }
  }
  
  编译成功后打java netserver画面如下图所示就会开始等待接受client端的要求。
  
 windows ce pocketpc上的java编程(1)(图二)

  
图netserver开始等待client端发出要求

  
  接着我们切换到dos模式(再开一个dos窗口)输入telnet 127.0.0.1 900(注意空格)画面会一闪就过去了。接着我们观察server的画面是否有出现取得一个client端从127.0.0.1如下图所示。接着我们就开始撰写pocketpc中的client
  
windows ce pocketpc上的java编程(1)(图三)

  
图netserver开始等待client端发出要求

  
  注意,目前server的程序皆在pc端执行,待下个client范例开始才移到pocketpc中执行。下面打造一个hello network。接下来我们撰写个输入您的姓名,server会打对您打招呼的程序。这个程序的原理是在server端执行一个无线回圈,然后提供服务如接受到 client传来的讯息之后就传回一个讯息hello的讯息给client,另外我们为了达到一次能够同时服务多个使用者所以我们使用了thread的技术。
  
  server端程序:
  
  import java.io.*;
  import java.net.*;
  public class nethelloserver {
  string clientmessage; serversocket ssocket;
  //宣告使用serversocket的类别
  socket csocket;
  //取得client联机封包的socket,各为别想太多就是client端的联机
  public nethelloserver() {
  try {
  ssocket = new serversocket(900,200);
  //开启port 900,并限定client联机的数量为200,若开启正常则开始等待client端的联机
  while(true) {
  csocket=ssocket.accept();
  thread t=new mythread(csocket);
  t.start();
  }
  }
  catch(ioexception ioe) {
  system.out.println("开启server异常!!!");
  }
  }
  public static void main(string[] args) {
  new nethelloserver();
  }
  }
  class mythread extends thread { socket conn;
  string tempstr; datainputstream dis; dataoutputstream dos;
  //建构者
  public mythread(socket insocket) { conn = insocket; }
  public void run() {
  try{
  system.out.println("server go connect from:"+conn.getinetaddress().gethostname());
  dos = new dataoutputstream(conn.getoutputstream());
  dos.writeutf("输入您的姓名的资料"); //get the request conntent
  dis = new datainputstream(conn.getinputstream());
  tempstr = dis.readutf();
  //响应一下
  dos.writeutf("您输入的资料为"+tempstr+"系统正在为您准备中请稍后...");
  //复杂的动作可以写在这边
  dos.writeutf(tempstr+" 您好...");
  system.out.println("server recivews data ="+tempstr);
  conn.close();
  //断线
  }
  catch(ioexception e) {
  system.out.println(e);
  }
  }
  }
  
  client端的程序
  
  import java.awt.*;
  import java.awt.event.*;
  import java.net.*;
  import java.io.*;
  public class helloclient extends frame {
  label lb1 = new label("请输入姓名");
  textfield tf1 = new textfield("",14);
  label lb2 = new label("请输入server的ip");
  textfield tf2 = new textfield("",14);
  textarea ta1 = new textarea("");
  button btn1 = new button("送出讯息");
  button btn2 = new button("离开");
  panel pl1 = new panel();
  panel pl2 = new panel();
  static socket csocket = null;
  mouseclickevent bce = new mouseclickevent();
  public helloclient() { //窗口设定
  btn1.addmouselistener (bce);
  btn2.addmouselistener (bce);
  pl1.setlayout(new gridlayout(2,1));
  pl1.add(lb1); pl1.add(tf1); pl1.add(lb2); pl1.add(tf2);
  add(pl1,borderlayout.north);
  add(ta1,borderlayout.center);
  pl2.add(btn1); pl2.add(btn2);
  add(pl2,borderlayout.south);
  setsize(240,320);
  setvisible(true);
  }
  public static void main(string[] args) {
  new helloclient();
  }
  //以下为按钮事件处理
  class mouseclickevent implements mouselistener {
  public void mouseclicked(mouseevent e) {}
  public void mousepressed(mouseevent e) {
  if(e.getsource() == btn1) {
  if(!tf2.gettext().equals("")&&!tf1.gettext().equals(""))
  try{
  //csocket = new socket("127.0.0.1",900);
  csocket = new socket(tf2.gettext(),900);
  datainputstream dis = new datainputstream(csocket.getinputstream());
  string data = dis.readutf();
  //system.out.println("/nclient get datafrom server = "+data);
  ta1.append("/n送一个讯息到server: "+data); //write response to server
  dataoutputstream dos = new dataoutputstream(csocket.getoutputstream());
  //dos.writeutf("bye! all done");
  dos.writeutf(tf1.gettext());
  data = "";
  data = dis.readutf();
  //system.out.println("client get datafrom server = "+data);
  ta1.append("/n收到server的讯息: "+data);
  data = dis.readutf();
  //system.out.println("client get datafrom server = "+data);
  ta1.append("/n收到server的讯息: "+data); csocket.close();
  }
  catch(ioexception ioe) {
  system.out.println(e);
  }
  }
  else if(e.getsource() == btn2) {
  //system.out.println("btn2 is clicked");
  system.exit(1);
  }
  }
  public void mousereleased(mouseevent e) {}
  public void mouseentered(mouseevent e) {}
  public void mouseexited(mouseevent e) {}
  }
  }
 
 
上一篇: windows ce, pocketpc上的java编程    下一篇: corba 及java idl应用编程
  相关文档
jrc0.4.00二进制发布版(java客户端框架) 11-17
改写equal()的同时记得要改写hashcode 11-17
在struts中使用validator框架 11-17
超越梦想 ejb 3.0规范全新体验 11-17
构建j2ee应用程序的任务列表 11-17
要使用 ejb 组件你需要了解些什么呢? 12-11
jive中的abstract factory 11-17
java多线程编程基础之非线程的方法 11-17
java实例 阴阳历算法 11-17
给你个比较全的关于时间的操作的东西 11-17
log4j的使用总结!(用于收藏救急用) 11-17
关于分页问题(zt) 11-17
使用properties从文件获取属性 11-17
jboss技术支持文档 11-17
功能完善的java连接池调用实例 11-17
javabean持久化 11-17
如何避免microsoft非标准javasdk的潜在危险(1) 11-17
两种方法定位java应用程序瓶颈(2) 11-17
递归删除与给定的文件名不符的文件 11-17
eclipse 的字符串分区共享优化机制 11-17
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息