服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

windows ce pocketpc上的java编程(1)


  网络联机的过程介绍
  先介绍一下基本的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) {}
  }
  }

扫描关注微信公众号