基于Java的系统网络编程研究

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:sntengwei
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:Java语言在网络编程应用上,优势是显而易见的。网络编程不仅需要有一个高效、稳定通信机制为基础,更需要一个安全的运行环境,同时完备的程序还应考虑资源的有效管理,该文从这几个方面,基于java语言,对网络编程展开了探讨。
  关键词:Java;网络编程;研究
  中图分类号:TP393文献标识码:A文章编号:1009-3044(2011)15-3553-03
  Java-based Research Network Programming
  DENG Bo-tao
  (Huizhou Business School, Huizhou 516003, China)
  Abstract: Java programming language applications on the network, the advantage is obvious. Network programming not only need to have an efficient and stable communication mechanism, the more need for a secure operating environment, and comprehensive procedures should also be considered effective management of resources, several aspects of this paper, based on java language programming on the network launched Discussion.
  Key word: Java; network programming; research
  目前较为流行的网络编程模型,是Client/Server(客户机/服务器)结构,即通信双方是客户机和服务器的关系。客户需要服务时,向服务器发送请求。服务器上的网络监听端口接到客户请求后,就会启动一个专为该客户服务的进程来响应请求,同时继续监听服务端口,以保证后来的客户也能及时得到服务。
  它们利用网络协议来通信。TCP/IP(传输控制协议/网际协议)是当今应用最为广泛的网络协议,它实现了异构网络或异种机之间互联通信。狭义上讲,网络编程的目的就是通过TCP/IP协议,实现和服务器或客户端的通信。而Java以其语法简单、性能优越,并且支持多平台的特性,成为了网络编程的首选工具。
  1 Java网络编程的优势
  1)强大的类库
  Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口Java.net。同时,它还提供了用于网络应用编程的强大类库,包括URL、URLConnection、Socket、ServerSocket等。在编辑程序时候,要实现通信,程序员只创建相应类的对象即可,或者编辑新类继承该类,省去了其他语言对com控件调用的麻烦。
  2)有效的安全机制
  在网络环境中,Java还提供了一个安全机制以防恶意代码的攻击。除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制。ClassLoader类会分配给新下载的类不同的名字空间,以防其替代本地的同名类,并进行字节代码检查。而SecurityManager类给Java提供了安全管理机制,在应用时设置安全哨兵。
  3)高效的多线程处理
  在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子类来创建。通常有两种方法来创建线程:其一,使用型构为Thread的构造子将一个Runnable接口对象,包装成一个线程;其二,由Thread类派生出的子类重写run方法,由该子类创建的对象就是一个线程。由于Thread类已经实现了Runnable接口,所以任何一个线程均有自己的run方法,而该方法中包含了线程所要运行的代码,线程的活动由此来控制。Java语言支持多个线程的同时执行,并提供多线程之间的同步机制,更好的适应互联网的需要。
  2 对URL的网络编程
  URL(Uniform Resource Locator)是一致资源定位器的简称,它表示Internet上某一资源的地址。通过URL我们可以访问Internet上的各种网络资源,比如WWW、FTP以及手机网络的WAP站点。浏览器通过解析给定的URL可以在网络上查找相应的文件或其他资源。TCP/IP中对于URL中主机名的解析也是协议的一个标准,即域名解析服务。使用URL进行网络编程,不需要对协议本身有太多的了解。
  2.1 创建URL对象
  利用URL类,可以创一个URL对象。具体的构造方法如下:
  1)Public URL (String spec);
  Spec表示一个URL地址的字符串。通过这个地址,来构造一个URL类。例如:URLurlBase= New URL(“http://www.126.net”);
  2)Public URL(URL context, String spec);
  通过基URL和相对URL的页面地址构造一个URL对象。这里content是一个URL对象,作为要构造的对象的基;spec表示相对content的,一个页面文件的地址。例如:
  URLnet126=new URL ("http://www.126.net/");
  URLindex126=new URL(net126, "index.jsp");
  3)Public URL(String protocol, String host, String file);
  Protocol表示传输协议,host表示网址,file表示文件地址。需要注意的是这里的host表示的网址是要去掉前面的协议头的,如:http://等。具体应用如下:
  URLgame126=new URL("http", "www.126.net", "/pages/Game. jsp");
  4)Public URL(String protocol, String host, int port, String file);
  这里,port是相对于host的服务器的端口号,创建的URL对象指定用该端口通信,具体应用如下:
  URL gamelan=newURL("http","www.gamelan.com",80,"Pages/Game. jsp");
  另外,利用类URL的构造方法创建对象,抛弃了非运行时例外,即:MalformedURLException。因此,当生成URL对象时,需要对这一例外进行处理。通常是用try-catch语句进行捕获。格式如下:
  try{
  URL myURL= new URL(…)
  }catch (MalformedURLException e){
  …
  }
  2.2 对URL对象的解析
  URL对象生成后,其属性是无法改变的,但是可以通过URL类所提供的方法来获取这些属性:
  public String getProtocol() 获取该URL的协议名;
  public String getHost() 获取该URL的主机名;
  public int getPort() 获取该URL的端口号,如果没有设置端口,返回-1;
  public String getFile() 获取该URL的文件名;
  public String getRef() 获取该URL在文件中的相对位置;
  public String getQuery() 获取该URL的查询信息;
  public String getPath() 获取该URL的路径;
  public String getAuthority() 获取该URL的权限信息;
  public String getUserInfo() 获得使用者的信息;
  public String getRef() 获得该URL的锚。
  2.3 读取网络资源
  当我们得到一个URL对象后,就可以通过它读取指定的网络资源。这时我们将使用URL的方法openStream(),其定义为:InputStream openStream();
  方法open Steam()与指定的URL建立连接并返回InputStream类的对象以从这一连接中读取数据。
  public class URLReader {
  public static void main(String[] args) throws Exception {
  //声明抛出所有例外
  URL tirc = new URL("http://www.tirc1.cs.tsinghua.edu.cn/");
  //构建一个URL对象
  BufferedReader in=new BufferedReader (new InputStreamReader ( tirc.openStream ( ) ) );
  //使用openStream得到一输入流并由此构造一个BufferedReader对象
  String inputLine;
  while ((inputLine = in.readLine()) != null) //从输入流不断的读数据,直到读完为止
  System.out.println(inputLine); //把读入的数据打印到屏幕上
  in.close(); //关闭输入流
  }
  }
  3 JSP的应用
  JSP技术是使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。同时,网页还能通过tags和scriptlets访问存在于服务端的资源。JSP将网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。
  1)内容的生成和显示分离
  网站程序员在HTML或XML页面已设计和格式化后,可以使用JSP标识或者脚本来生成页面上的动态内容。生成内容的逻辑被封装在标识和JavaBeans组件中,并且捆绑在脚本中,运行于服务器端。由于核心逻辑被封装在标识和JavaBeans中,所以网页设计人员能够随意编辑和使用JSP页面,而不影响内容的生成。在服务器端,JSP引擎解释JSP标识和脚本,生成所请求的内容,并且将结果以HTML或者XML页面的形式发送回浏览器。
  2)重用组件
  大多数的JSP页面都依赖于可重用的、跨平台的组件(JavaBeans或者Enterprise JavaBeans组件)来执行应用程序,实现各种复杂的处理。由于开发人员之间在共享和交换执行普通操作的组件,使得这些组件能为更多的使用者和客户团体所使用。
  3)采用标识
  网页设计人员不会都熟悉脚本语言的编程。JSP技术封装了许多功能,使这些功能在XML标识中进行动态内容生成中,被直接应用。标准的JSP标识能够访问和实例化JavaBeans组件,设置或者检索组件属性,下载Applet。
  4 数据库链接
  一个完备的应用程序,没有数据库支持是不可想象的。在Java中,连接数据库的技术是JDBC。JDBC是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。Java程序通过JDBC驱动程序与数据库相连,执行查询、提取数据等操作。利用此技术Java程序可以访问带有ODBC驱动程序的数据库,例如:Oracle、Sybase、MS SQL Server和MS Access等数据库。
  JDBC的操作主要有三步:与数据库建立连接、发送操作数据库的语句、进行相关处理。以此来完成,对基于JDBC的数据库访问。针对JDBC的具体应用,本人给出的下面这段代码来阐述:
  Connection con = DriverManager.getConnection("jdbc:odbc:wombat","login", "password");
  Statement stmt = con.createStatement();
  ResultSet rs = stmt.executeQuery("SELECT a, b, c FROM Table1");
  while (rs.next())
  { int x = rs.getInt("a");
  String s = rs.getString("b");
  float f = rs.getFloat("c");
  }
  5 对象清除和垃圾回收
  1)垃圾回收机制
  在编程过程中,对象被创建后,一定会占用内存空间。这个对象使用完后,它所占用的空间应该释放,以免系统内存过度虚耗。在网络编程中,这点尤为重要。如没有相应的处理机制,就会造出网络资源瞬间耗尽。相对于其他编程语言,Java语言中并没有明显的对象销毁操作。因为其系统将会自动去分辨无用的对象,并对其清除,释放内存空间。
  系统分辨无用对象的方法很多种,最常用几个有:引用计数法、tracing算法compacting算法、copying算法、generation算法和adaptive算法。其中引用计数法是其他方法的基础,最容易理解。Java虚拟机会为每一个创建的对象,设置一个引用计数,来统计该对象被多少个变量引用,以此衡量其存在的价值。当计数为零的时候,则说明这个对象已无用,可以收回。至于回收的时机,则由Java虚拟机的垃圾回收线程来决定。
  2)Finalize()的应用
  finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在Object类中定义的,因此所有的类都继承了它。子类覆盖 finalize()方法以整理系统资源或者执行其他清理工作。finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。
  有时需要采取与Java的普通方法不同的一种方法,这种方法有些具有C语言风格,它会从Java里调用非Java方法。C和C 是目前唯一能得到多方支持的语言,因为它们能调用通过其他语言编写的子程序,所以能够有效地调用任何东西。在非Java代码内部,当调用C语言的malloc()系列函数,来分配存储空间时,除非调用了free(),否则存储空间不会得到释放,从而造成内存漏洞的出现。因为free()是一个C和C 的函数,所以我们需要在finalize()内部的一个固有方法中调用它。这样就导致了我们不能过多地使用finalize(),因为它并不是进行普通清除工作的最理想选择。
  6 结束语
  网络编程除了要考虑到通信的高效稳定、操作简便和垃圾回收的问题,还应做到编程逻辑的严谨、语句的安全可靠。由于网络的高速发展,各种的相关网络技术也得到了更深层的开发,使得互联网充满了机遇的同时,更潜伏了数不尽的挑战。作为一个性能卓越的网络软件,必须能通过网络中来自黑客技术的威胁、异常和紧急事态,以及网络的多变性的考验,才算合格。
  参考文献:
  [1] 江小燕.Java网络编程的研究[J].电脑编程技巧与维护,2010(3).
  [2] 王丽丽,史红艳,褚梅.Java对象的清除与垃圾回收[J].科园月刊,2010(12).
  [3] 祡杰.Java网络编程的探讨[J].科学论坛,2010(10).
  [4] 陈光.基于Java网上系统的研究与设计[J].信息技术,2010(3).
  [5] 汤德怀.Java程序设计中多线程的探索与研究[J].计算机与网络,2009(12).
其他文献
分类对于法学研究和法律实务具有重要意义,然而任何法学分类都具有一定的局限性。因为分类属于人类认识领域,而事物本身则是无限展开的。法学分类的局限性是由人类认识能力的局
随着生态环境问题的日益凸显,各国生态学家越来越重视生态环境区划,城市生态经济功能区划应运而生。上海是我国最大的经济中心和世界级的大都市,对上海进行生态经济功能区划研究
现代社会呈现出价值多元的趋势,但对于教师的道德要求,人们仍以理想化的“完人”形象作为标准,这种过高的道德期望已成为教师沉重的精神枷锁。在当代价值多元社会里,作为传统社会
为适应高技术条件下部队作战指挥的需要。在全面分析作战指挥效能影响因素的基础上,构建了评估指标体系,结合模糊综合评判方法,建立模型,并进行评估,为部队进行作战指挥效能评估提
《计算机实现列车运营调度的优化数学模型的设计实验》将数学知识、计算机应用与实际问题有机地结合起来,从生活中去学习、探索计算机和数学应用。
产业集群作为产业组织发展的重要特征之一,是提升产业竞争力的重要方式,也是符合东北经济区发展的一种产业战略选择。东北经济区在经济发展过程中应当立足于现有工业基础和资源
"互动式"教学模式能够充分发挥学生学习的主动性、积极性、创造性,使学生真正的成为学习的主人。该文针对学校教学系部的实际教学需求,提出了一个适用于系部教学的网络互动教
科学发展观这个重大战略思想的提出顺应了经济社会发展的客观要求;其基本内涵十分丰富,具有重要意义.科学发展观关键在落实.
无线传感器网络已在许多领域有着广泛的应用,网络中的节点定位是为诸多应用提供了基本信息,基于移动信标的无线传感器网络节点定位是重要的研究领域之一。介绍了基于移动信标的无线传感器网络节点定位的基本原理和评价标准,对该技术的未来进行了展望。