版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第10章网络程序设计Java语言最初是作为一种网络程序设计语言而出现的,因此具有强大的网络功能。Java所编写的网络程序,能够使用网络上的各种资源和数据,能够与服务器建立各种形式的连接和传输通道,能够让计算机间进行通信。10.1网络通信概述在介绍网络程序设计之前,首先要对网络有一定的认识,了解网络通信的有关概念。因此在这一节中,先对网络通信的相关知识作简要的介绍。10.1.1什么是网络通信计算机网络是把地理上分散、具有独立功能的计算机,用通信线路和通信设备连接起来,以实现资源共享的系统。计算机网络是由硬件系统、协议和软件组成。通信双方在通信过程中,必须共同遵守约定和规则。按网络覆盖的地理范围分类,分为局域网(LAN)(几十米至数公里)、城域网(MAN)(几十公里至数百公里)、广域网(WAN)(数百公里以上,甚至上万公里)。10.1.2网络协议基础在网络中,凡是涉及到两个或多个通信的远程实体,都会受到网络协议的制约。协议定义了在两个或多个通信实体之间,交换的报文格式以及报文传输时所采取的动作。OSI(OpenSystemInterconnection)参考模型将整个网络分为七层。10.1.3Java中所涉及到的网络应用类在Java语言中,提供网络功能的类都包含在包中,主要分为三大类:使用URL:使用套接字Socket:使用数据报Datagram方式:10.2一个简单的网络编程实例本小节介绍一个使用URL方式访问指定服务器资源的实例。该实例使用URL方式,编写程序实现一个简易的网页浏览器。10.3使用URL类IP地址用来唯一标识网络中的计算机,而URL则标识了网络中计算机上的资源。Java中使用URL类来封装URL相关的数据信息。使用URL类和URLConnetion类,都能够实现对一个服务器的访问,获取服务器上的资源。在这一节中,将向大家介绍URL类和URLConnetion类,以及如何使用这两个类的对象及方法,来实现对网络中URL资源的访问。10.3.1URL类中常用的方法创建URL类的对象,主要使用以下4种构造方法。构造方法作用URL(String
str)使用参数str指定的完整的Web地址,来创建一个URL对象URL(URLurl,Stringstr)使用指定的URL对象url作为基本地址,使用参数str作为相对路径来创建一个URL对象URL(Stringstr1,Stringstr2,Stringstr3)使用参数str1指定网络协议(例如http或ftp),参数str2指定主机名,参数str3作为相对路径来创建一个URL对象URL(Stringstr1,Stringstr2,intport,Stringstr3)使用参数str1指定网络协议(例如http或ftp),参数str2指定主机名,参数port指定端口号,参数str3作为相对路径来创建一个URL对象10.3.2使用URLConnetion类URLConnetion类的对象可以与指定URL建立动态连接。同时使用URLConnetion类的对象可以实现向服务器发送请求,将数据送回服务器。创建URLConnetion类的对象,一般都会使用URL对象的openConnection()方法来返回,如下代码片断所示:URLurl=newURL(“”);URLConnection
urlConn=url.openConnection();10.4使用InetAddress类获取IP地址信息InetAddress类是用来封装IP地址相关信息的类。可以为本地主机或指定地址的远程主机建立InetAddress对象,从而获取该主机地址的相关信息。使用InetAddress类时,并不能通过构造方法获取其对象,需要使用InetAddress类中的静态方法publicstaticInetAdress
getLocalHost()来获取。方法作用publicstaticInetAddress
getLocalHost()用于为本地主机创建一个InetAddress对象publicstaticInetAddress
getByName(Stringhostname)用于为指定的主机名创建一个InetAddress对象,参数hostname指定主机名publicstaticInetAddress[]getAllByName(Stringhostname)用于为指定的一组同名的主机创建一个InetAddress对象数组,参数hostname指定主机名publicbyte[]getAddress()用于返回一个表示主机地址的字节数组publicStringgetHostAdress()用于返回一个表示主机ip地址的字符串publicStringgetHostName()用于返回一个表示主机名的字符串10.5使用套接字Socket类套接字Socket类,是通过C/S(客户端/服务器)方式,来实现网络中的两个程序间的连接。通过指定的IP地址以及端口来实现互联。建立连接的两个程序间可以实现双向通信,任何一方既可以接受请求,也可以向另一方发送请求,因此利用套接字Socket类可以轻易的实现网络中数据的传递。10.5.1Socket类与ServerSocket类由于使用套接字Socket实现的网络连接,是基于C/S模式的TCP/IP协议下的连接,因此在使用的时候也会分为客户端套接字和服务器端套接字两种。在Java中同样提供了用于实现客户端套接字的Socket类,以及用于实现服务器端套接字的ServerSocket类。在网络中的两个程序间需要建立连接的时候,一个程序会作为客户端,而另一个程序会作为服务器端。(1)作为客户端的程序中,会建立客户端套接字Socket对象,并需要指定服务器端的地址及端口号。(2)作为服务器端的程序,会建立服务器端套接字ServerSocket对象,并指定监听端口号。10.5.2建立与服务器的连接通过前一节的介绍,应该对Socket类与ServerSocket类有了初步的认识。下面就以一个具体的例子来说明,如何使用这两个类来实现网络程序间的连接。在这个例子中,使用本机同时作为服务器及客户端,模拟实现服务器端程序与客户端程序的连接,同时实现服务器端与客户端的数据传输。(1)客户端程序如下代码所示,创建Socket对象,同时实现三种构造方法,可以实现执行程序时,根据参数的不同,来选择不同的构造方法。(2)服务器端程序如下代码所示,创建ServerSocket对象,指定监听端口号为“10745”。若监测到客户端有发送来的请求,便建立Socket对象来保存该连接;10.6使用套接字Datagram类Java语言中除了使用Socket套接字实现网络连接以外,还提供了Datagram(数据报)套接字类,来实现网络间数据的传输。但与Socket套接字不同,使用Datagram(数据报)套接字实现的数据传输是基于UDP协议的,是将传送数据的目的地址记录在数据报中,之后直接将数据报在网络中传输,并不能保证数据是否能够安全、能完整地发送到接收方,因此是不能保证传输质量的,但其传输的效率却高于使用Socket套接字传输。10.6.1Datagram(数据报)套接字在包中,提供了DatagramSocket和DatagramPacket两个类,用来实现应用程序间建立的数据报方式的网络通信。使用Datagram数据报方式实现通信,要将数据打包后才能进行传送和接收。而DatagramPacket类就是用来创建数据包的。所创建的数据包分为如下所示的以下两种。(1)发送数据包:发送数据方程序创建并使用,该数据包中包含所要传送的数据信息,以及要传递到的目的地址。(2)接收数据包:接收数据方程序创建并使用。10.6.2使用Datagram实现数据传输通过前一节的介绍,应该对数据包套接字Datagram有了初步的认识。下面就以一个具体的例子来说明,如何使用DatagramPacket及DatagramSocket两个类来实现网络程序间的数据传输。在这个例子中,同样使用本机机器同时作为发送端和接收端,模拟实现网络中数据传输。(1)发送数据端程序如下代码所示,创建发送数据包,向指定地址机器(本机地址)发送该数据包,并显示发送信息。(2)接收数据端程序如下代码所示,创建接收数据包,并显示接受到的数据信息。10.7网络程序经典示例--聊天室程序在了解了Java的网络特性及其使用的基础上,在这一节中,介绍如何用Java程序来实现一个简易的网络聊天室。10.7.1聊天室基本原理在这里所实现的聊天室程序,是基于C/S模式的TCP/IP协议下的连接。在网络中包含多个客户端聊天室程序和一个服务器端程序。程序中使用Socket及ServerSocket类实现网络通信。程序执行的过程如下:(1)当服务器启动后,就将一直监听指定的端口中,是否有客户端发送来的请求。(2)当客户端已经建立了到服务器的连接后,就可以实现聊天功能,当任何一个客户端发言时,该发言的字符信息会首先传送到服务器,之后,服务器会使用循环,将该信息发送至服务器端已经记录了建立连接的客户端。10.7.2客户端程序客
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年青海省海东地区单招职业倾向性测试题库含答案详解(典型题)
- 2025年东营港经济开发区所属学校招聘急需紧缺教师备考题库及答案详解(新)
- 2026年闽北职业技术学院单招职业倾向性考试题库附参考答案详解(基础题)
- 2026年鹰潭职业技术学院单招综合素质考试题库及答案详解(网校专用)
- 2026年马鞍山职业技术学院单招综合素质考试题库(含答案详解)
- 国家事业单位招聘2024中国民族语文翻译中心(局)面向社会招聘1人笔试历年参考题库典型考点附带答案详解
- 2025年厦门市翔安区第六实验小学公开补充招聘产假顶岗非在编合同教师备考题库及完整答案详解
- 国家事业单位招聘2024中国人民大学信息资源管理学院招聘1人笔试历年参考题库典型考点附带答案详解
- 2026年青海省海东地区单招职业适应性考试题库及答案详解(基础+提升)
- 国家事业单位招聘2023中国残联机关服务中心面向社会招聘及笔试笔试历年参考题库典型考点附带答案详解
- 2026河南三门峡市辖区法院省核定聘用制书记员招聘74人考试参考题库及答案解析
- 2026 年三八妇女节 普法宣传方案 课件
- 【新教材】人教PEP版(2024)四年级下册英语 Unit 1 Class rules A Lets talk 教案
- 【MOOC】《大学物理的数学基础》(西南交通大学)章节期末慕课答案
- 2021年陕西省中考物理试卷一
- 电梯安装教程课件
- 城市燃气工程系统规划课件
- 申星牌SX型紫外线消毒车使用说明书
- 北师大版七年级数学下册-基础计算题100题(无答案)
- 石化信息分类编码-装置名称及3
- 土方工程沟槽土方(沟槽开挖)技术交底记录
评论
0/150
提交评论