编译及激活程序 Server端 执行方法在PC端编译及执行 javac –classpath %pjeeclasspath%;. netHelloServer.java(编译) java –classpath %pjeeclasspath%;. netHelloServer(执行)
图 netServer开始等待Client端发出要求 注意Server激活之后就不要关掉了,可以测试Client端的联机。Client端请各位读者照着下面输入指令,记得您的PocketPC要连上网络。 javac –classpath %pjeeclasspath%;. Clinet.java(Enter) java –classpath %pjeeclasspath%;. Client(Enter)
图Client的仿真器画面 图 在PDA中的画面 注意!
1. 各位读者可以从程序中注意到Server端及Client端中的Read及Write是互相对称的,希望大家在撰写程序中需要这个要点。
2. 配合无线网络卡、是蓝芽技术、及行动通讯等技术,这就是相当实用的应用程序了,感谢人类创造了网络还有Java。
一个URL的类别需要下面几个两个主要的参数:
协议的定义(如http或是ftp)
资源的名称(包含网址或是port)
关于URL的部分笔者只有为各位作简单的介绍,接着附上个读取网页的范例。
//httptest.java
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
public class httptest extends Frame
{
private Label lb1 = new Label("URL");
private TextField tf1 = new TextField(10);
private TextArea ta1 = new TextArea();
private Button btn1 = new Button("Get");
Panel p1 = new Panel();
public httptest()
{
p1.add(lb1);
p1.add(tf1);
p1.add(btn1);
//sp1.add(ta1);
add(p1,BorderLayout.NORTH);
add(ta1,BorderLayout.CENTER);
btn1.addActionListener(new btn1ActionEvent());
setSize(240,320); //for iPAQ
setVisible(true);
}
public static void main(String args[])
{
new httptest();
}
class btn1ActionEvent implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String URLStr;
try
{
//开启一个新的URL对象
URL u = new URL(tf1.getText());
ta1.append("\t You hava entered:"+lb1.getText()+"\n");
ta1.append("\t URL info"+u.toString()+"\n");
InputStreamReader ir = new InputStreamReader(u.openStream());
BufferedReader bf = new BufferedReader(ir);
ta1.append("\t URL stream connection: Read file now...\n");
String aLine;
while((aLine = bf.readLine())!=null)
{
ta1.append(aLine + "\n");
}
bf.close();
ir.close();
}
catch(MalformedURLException mue)
{
//System.out.println("网址不正确");
}
catch(IOException ioe)
{
//System.out.println("Error "+ioe);
}
}
}
}
编译及执行程序
javac –classpath %pjeeclasspath%;. httptest.java(编译)
pjava –classpath %pjeeclasspath%;. httptest (执行)
接着输入个网址,记得要连上网络。
图 在仿真器中的画面(1) 图 在仿真器中的画面(2) 相信大家都觉得很奇怪,为什么无法看看到如我们浏览器一般的美丽图样及文字呢?因为我们必须要在为这些取得的字符串还有档案作剖析(parse)的动作,如读到了图形的字节就需要使用使用绘图软件打开,读到音乐的字节就需要使用媒体播放工具来开启,这是可一门相当大的学问也是相当的苦工唷。
分布式的应用程序
在为各位读着介绍下一个更炫更酷的RMI技术之前笔者先为各位介绍一些分布式应用程序的观念,另外附上一个网络程序与数据库连接的范例架构如下图所示,我们将SocketServer中间安置许多真实的程序逻辑,最后再透过JDBC连接到数据库,如此我们可以将数据库的联机降至最低,至于Client端联机的处理则就需要靠各位撰写程序的技巧啰!!这是常常看到的多层式(N-tier)架构或是分布式的应用程序皆是以此技巧发展出来的笔者所附上的范例程序是属于三层式架构(3-tier)。
图(三层式)的系统架构