第11章网络编程.ppt
《第11章网络编程.ppt》由会员分享,可在线阅读,更多相关《第11章网络编程.ppt(66页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第11章网络编程2023/1/141温故而知新!210.1多线程概念10.1.1程序、进程和线程10.1.2使用线程的好处310.2线程的实现10.2.1继承Thread线程类10.2.2实现接口Runnable10.2.3使用Timer类和继承TimerTask类410.3线程的生命周期10.3.1线程的状态10.3.2线程的优先级10.3.3线程的调度510.4线程的同步10.4.1线程间的关系10.4.2线程同步问题6第11章网络编程11.1网络通信概念11.2统一资源定位器(URL)的使用11.3Java网络编程11.4常见问题及解决方案711.1网络通信概念v网络用物理链路将各个孤立
2、的工作站或主机相连在一起,组成数据链路,从而达到资源共享和通信的目的。通信是人与人之间通过某种媒体进行的信息交流与传递。网络通信一般指网络协议。当今网络协议有很多,我们常用到的是TCP/IP,应根据需要来选择合适的网络协议。v网络协议就是网络之间沟通、交流的桥梁,只有相同网络协议的计算机才能进行信息的沟通与交流。这就好比人与人之间交流所使用的各种语言一样,只有使用相同语言才能正常、顺利地进行交流。从专业角度定义,网络协议是计算机在网络中实现通信时必须遵守的约定,也就是通信协议。主要是对信息传输的速率、传输代码、代码结构、传输控制步骤、出错控制等作出规定并制定出标准。8v网络中不同的工作站,服务
3、器之间能传输数据,源于协议的存在。随着网络的发展,不同的网络应用程序开发商开发了不同的通信方式。为了使通信成功可靠,网络中的所有主机都必须使用同一语言,不能带有方言。因而必须开发严格的标准定义主机之间的每个包中每个字中的每一位。这些标准来自于多个组织的努力,约定好通用的通信方式,即协议。这些都使通信更容易。已经开发了许多协议,但是只有少数被保留了下来。那些协议的淘汰有多种原因设计不好、实现不好或缺乏支持。而那些保留下来的协议经历了时间的考验并成为有效的通信方法。这些协议都符合一定的协议标准。9网络协议标准可分为两类:l事实标准是由厂家制定的,未经有关标准化组织审定通过,但由于广泛使用形成了事实
4、标准。l法定标准是经有关标准化组织审定通过的标准。国际上的标准化组织有:(1)国际电信联盟(ITU,International Telecommunication Union)(2)国际标准化组织(ISO,International Standards Organization)(3)Internet体系结构委员会(IAB,Internet Architecture Board)v法律上的国际标准网络协议OSI并没有得到市场的认可。非国际标准网络协议TCP/IP现在获得了最广泛的应用。TCP/IP 常被称为事实上的国际标准网络协议。10v1977年,ISO成立研究机构。1983年,形成了OSI
5、/RM的正式文件,即七层协议体系结构,只要遵循OSI标准,一个系统就可以和位于世界上任何地方的、也遵循这同一标准的其它任何系统进行通信。七层协议分别是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。vTCP/IP把整个网络划分为四层的体系结构:应用层、传输层、网络层和网络接口层。在实际网络应用中,网络接口层包含数据链路层和物理层。11第11章网络编程11.1网络通信概念11.2统一资源定位器(URL)的使用11.3Java网络编程11.4常见问题及解决方案1211.2统一资源定位器(URL)的使用vURL(Uniform Resource Locator,URL)是统一资源定位器
6、的简称,它表示Internet上某一资源的地址。通过URL可以访问Internet上的各种网络资源,比如最常见的WWW、FTP站点。浏览器通过解析给定的URL可以在网络上查找相应的文件或其它资源。v在获取各种网络资源之前一般需要知道网络资源所在的网络地址。131.网络地址网络地址v在网络上,计算机是通过网络地址标识的。网络地址,通常有两种表示方法。第一种表示方法通常采用4个整数组成,一个32位的地址。每个32位IP地址被分割成两部分:前缀和后缀。地址前缀部分确定了计算机从属的物理网络;后缀部分确定了该网络上的一台计算机。例如:202.196.0.7 是郑州轻工业学院主页网站服务器的网络地址。另
7、外一种方法是通过域名表示网络地址。例如: 是郑州轻工业学院主页网站的域名。该域名与IP表示的是同一个网络地址。如果在网页浏览器的地址栏中输入域名“202.196.0.7”或输入,则打开的是同一个网页,即郑州轻工业学院的主页。14v在网络程序中,可以用类InetAddress的实例对象来记录网络地址,并获取其相关的信息。因为类InetAddress的构造方法的访问属性是默认模式,所以通常不能通过类InetAddress的构造方法来创建其实例对象。可以通过它的成员方法创建InetAddress的实例对象。类InetAddress的常用成员方法:getLocalHost()方法可获取本地计算机的网络
8、地址,可表示成“127.0.0.1”或“localhost”。getByAddress(byte addr)方法可获取参数addr指定它所对应的网络IP地址。getByName(String host)方法获取字符串参数host所对应的网络地址,IP地址和主机名都可。15【例11-1】获取网络地址的使用(InetAddressUse.java)/*开发者:*开发地点:办公室 开发时间:*年*月*日 最后一次修改时间:*年*月*日 功能简介:使用InetAddress类,获取网络地址。*/1.import .InetAddress;2.import .UnknownHostException;1
9、61.public class InetAddressUse2.private String hostAddress;/主机名,或者域名3.InetAddress ia;/声明一个对象4.public InetAddressUse(String hostAddress)5.this.hostAddress=hostAddress;6.7.public void address()8.try 9.ia=InetAddress.getByName(hostAddress);10.catch(UnknownHostException e)11.System.err.println(异常:+e);12
10、.e.printStackTrace();13.14.if(ia!=null)15.System.out.println(网络地址是:+ia.getHostAddress();16.System.out.println(网站的主机名是:+ia.getHostName();17.18.else 19.System.out.println(无法访问该网络地址:+hostAddress);20.171.public static void main(String args)2.InetAddressUse iau=new InetAddressUse();3.iau.address();4.5.18
11、192.统一资源定位器(统一资源定位器(URL)v统一资源定位器,也称网络资源定位器或统一资源定位地址,它一般指向网络上的资源。网络资源不仅可以包括网络上各种简单对象,如网络上的路径和文件等,还可以是一些复杂的对象,如数据库或搜索引擎(search engine)。统一资源定位器通常由若干个部分组成,其中常用的有协议(Protocol)、主机(Host)、端口号(Port)、文件(File)等。20协议(Protocol)指的是获取网络资源的网络传输协议。例如,HTTP(Hypertext Transfer Protocol,超文本传输协议)是在网络上进行超文本数据传输的一种协议,FTP(Fi
12、le Transfer Protocol,文件传输协议)是在网络上进行文件传输的协议。这两种协议都是常用的网络协议。主机(Host)指的是网络资源所在的主机。它可以用网络地址表示。端口号(Port)指的是与主机进行通信的端口号。端口号是一个整数,通常范围在065535之间(即16位二进制整数)。小于1024的端口号一般是分配给特定的服务协议,如TELNET(远程登录)的默认端口是23;SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)的默认端口是25;HTTP(超文本传输协议)的默认端口是80;FTP文件传送协议(File Transfer Protoco
13、l,简称FTP)的端口号是21(控制端口),20(数据端口)。如果没有注明端口号,URL将使用默认的端口号。文件(File)指的是广义的文件,即除了可以是普通的文件之外,还可以是路径。213.URL类的声明类的声明1.public final class URL implements Serializable2./参数指定一个包含协议、主机名、端口号、文件名的完整URL地址3.public URL(String spec)throws MalformedURLException;4./协议名、主机名、文件名5.public URL(String protocol,String host,Str
14、ing file)throws MalformedURLException;6.public URL(String protocol,String host,Sting port,String file)throws MalformedURLException;/协议名、主机名、端口号、文件名7.public String getProtocol();/返回在该URL中记录的协议名称8.public String getHost();/返回在该URL中记录的主机名9.public String toString();/返回完整URL地址字符串10.public int getDefaultPo
15、rt();/返回在该URL中记录的默认端口号11.public int getPort();/返回在该URL中记录的端口号12.public String getFile();/返回在该URL中记录的文件名13.public String getRef();/返回在该URL中记录的引用14.22【例11-2】URL的使用(URLUse.java)/*开发者:*开发地点:办公室 开发时间:*年*月*日 最后一次修改时间:*年*月*日 功能简介:使用URL类获取协议的基本属性。*/1.import .URL;2.import .MalformedURLException;231.public cl
16、ass URLUse2.public static void main(String args)3.try4.5.URL u=new URL(http:/);6.System.out.println(在URL(+u+)当中:);7.System.out.println(协议是+u.getProtocol();8.System.out.println(主机名是+u.getHost();9.System.out.println(文件名是+u.getFile();10.System.out.println(端口号是+u.getPort();11.catch(MalformedURLException
17、 e)12.System.err.println(异常:+e);13.e.printStackTrace();14.15.16.244.获取网络资源获取网络资源v统一资源定位器指向网络上的资源。通过类URL的成员方法:openStream()可以将类URL的实例对象与它所指向的资源建立起关联,从而可以将该网络资源当作一种特殊的数据流。这样可以利用处理数据流的方法获取该网络资源。读取网络资源数据的步骤如下:(1)创建类URL的实例对象,使其指向给定的网络资源;(2)通过类URL的成员方法openStream()建立起URL连接,并返回输入流对象的引用,以便读取数据;(3)可选步骤。通过java.
18、io.BufferedInputStream或java.io.BufferedReader封装输入流;(4)读取数据,并进行数据处理;(5)关闭数据流。v其中,步骤(3)是不是必要的步骤。当网络不稳定或速度很慢时,通过步骤(3)可以提高获取网络资源数据的速度。25【例11-3】通过URL获取网络资源的使用(URLReadDataUse.java)/*开发者:*开发地点:办公室 开发时间:*年*月*日 最后一次修改时间:*年*月*日 功能简介:通过URL获取网络资源的使用。可以获取网站的资源*/1.import java.io.BufferedReader;2.import java.io.In
19、putStreamReader;3.import .URL;261.public class URLReadDataUse2.public URLReadDataUse()3.try 4.URL url=new URL(http:/);5.BufferedReader br=new BufferedReader(new 6.InputStreamReader(url.openStream();7.String s;8.while(s=br.readLine()!=null)/读取网络资源读取网络资源信息信息9.System.out.println(s);/输出网络资源信息输出网络资源信息10.
20、br.close();11.catch(Exception e)12.System.err.println(异常异常:+e);13.e.printStackTrace();14.15.16.public static void main(String args)17.new URLReadDataUse();18.19.27第11章网络编程11.1网络通信概念11.2统一资源定位器(URL)的使用11.3Java网络编程11.4常见问题及解决方案2811.3Java网络编程11.3.1Java网络编程概述11.3.2基于TCP的Socket编程原理11.3.3基于TCP的Socket编程实现1
21、1.3.4基于UDP的Socket编程原理11.3.5基于UDP的Socket编程实现11.3.6基于SSL的Socket编程原理2911.3.1Java网络编程概述v可以使用Java语言提供的网络编程类库编写,类似QQ聊天系统、ftp服务器、Web服务器等的应用软件。30v通过使用套接字来实现进程间通信的的编程,就是网络编程。网络编程从大的方面说就是从信息的发送到接收。中间传输由物理线路完成,编程人员可以不用考虑中间传输。网络编程最主要的工作就是在发送端把信息通过规定好的协议分封装成包,在接收端按照规定好的协议把包进行解析,从而提取出对应的信息,达到通信的目的。其中最主要的就是数据包的封装、
22、数据包的过滤、数据包的捕获和数据包的分析,最后再做一些处理。v套接字是一种基于网络通讯的接口,即一种软件形式的抽象表述。用于表达两台机器之间在一个连接上的两个“终端”,即针对一个连接,每台机器上都有一个“套接字”,它们之间有一条虚拟“线缆”,线缆的每一端都插入到一个“套接字”里。31套接字有:u套接字(Socket):应用程序和网络协议的接口。uJava Socket:Java应用程序和网络协议的接口,提供若干个类的定义。Java应用程序利用这些类继承网络协议的行为,实现网络通信。uTCP Socket:使用TCP协议实现可靠的网络通信。uUDP Socket:使用UDP协议实现效率较高的网络
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 11 网络 编程
限制150内