第12章网络程序设计课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第12章网络程序设计课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 12 网络程序设计 课件
- 资源描述:
-
1、1第12章 网络程序设计212.1 网络的基本概念 java语言是Internet上的世界语。网络应用是Java语言取得成功的领域之一,它已经成为现在Internet上最流行的一种编程语言。Java语言在网络编程方面提供了许多方便,其他语言往往需要数页代码才能完成的事情,在Java中可能只需要一条语句就可以。借助HTML从网上下载applet在程序中通过URL访问网上资源通过包中的类直接在程序中实现网络通讯31、Java的网络通信分为三个层次: 最高一级的网络通信:从网络上下载Applet。客户端浏览器通过HTML文件中的标记来识别Applet,并解析Applet的属性,通过网络获取Apple
2、t得字节码文件。(由浏览器提供)(由浏览器提供)声音文件和图象文件的获取是次一级的通信。通过类URL的对象指明文件所在位置,并从网络上下载声音和图象文件。(由(由Java开发环境提开发环境提供)供) 最低一级的通信是利用包中提供的类直接在程序中实现网络通信。(由(由Java语言开发语言开发包提供)包提供)42、网络协议应用层:使用URL、URLConnection 类传输层:使用Socket、ServerSocket 类Application(HTTP, FTP, telnet)Transport(TCP, UDP,.)Network(IP)Link(device driver)Physics
3、一般应用程序是靠TCP(而不是IP)实现通讯功能,因为它们需要大量数据的无差错传输。53、Java中的网络支持中的网络支持包中的主要的类和可能产生的例外包括:面向IP层的类:InetAddress面向应用层的类:URL、URLConnection面向网络层的类:TCP协议相关类:Socket、ServerSocketUDP协议相关类:DatagramPacket、DatagramSocket、MulticastSocket可能产生的例外:BindException、ConnectException、MalformedURLException、NoRouteToHostException、Pro
4、tocolException、SocketException、UnknownHostException、UnknownServiceException3、Java中的网络支持中的网络支持64、传输层协议TCP与UDP TCP(Transport Control Protocol) 两主机之间有连接的、可靠的、端对端(end-to-end)的数据流的传输 如http, ftp, telnet 的传输层均使用此协议 UDP(User Datagram Protocol) 从一台机器向另一台机器以无连接的、数据报的方式进行通讯的协议 如:email可以使用UDP75、主机与端口 如何确定通讯的目标,
5、两部分: 主机使用IP地址或域名 端口,用于区分同一台主机上的不同的进行通讯的应用进程 端口 01023系统使用 102465535用户使用,最好8000以上86、Java与网络Java提供的网络功能有三大类: URL, Socket, Datagram.URL是三大功能中最高级的一种,通过URL Java程序可以直接送出或读入网络上的数据.Socket是传统网络程序最常用的方式,可以想象为两个不同的程序通过网络的通信信道.Datagram是更低级的网络传输方式,它把数据的目的纪录在数据包中,然后直接放在网络上.912.2 URL的使用在WWW上,每一信息资源都有统一的且唯一的地址,该地址就叫
6、URL(Uniform Resource Locator),它是WWW的统一资源定位标志。12.2.1 URL的组成资源类型(协议)存放资源的主机域名资源文件名端口 10用字符串表示Internet网络上资源的地址,指向World Wide Web 上的一个资源。http:/:80/dir/file.htm协议名( http、 ftp、 file等)资源位置(主机域名,也可用IP地址)端口号(服务器监听程序的端口。WWW服务端口隐含值为80,FTP 21 ,Telnet 23)路径名(文件在机器中的路径名。资源文件或CGI程序等)引用(# 指向资源文件的某一个位置)1112.2.2 URL类.
7、URL 创建URL对象代表一个URL资源构造方法1) URL(String spec) 例: URL url1=new URL(“http:/:80/file”);2) URL(URL baseURL, String relativeURL) URL url2=new URL(url1, “file.html”);例: URL url1 = new URL( http:/:120/ ) URL url2 = new URL(url1, “index.html”);123)URL(String protocol, String host, int port, String file)4)URL(
8、String protocol, String host, String file)使用缺省80端口注意:构造函数抛出MalformedURLException13URL类的常用方法 方法1 取出URL的指定成分信息 url1.getProtocol() /协议名 url1.getHost() /主机名 url1.getPort()/端口号 url1.getFile()/文件名 方法2 InputStream url1.openStream()/获得一个输入流String toString()/ 将此URL对象转换为字符串的形式14例12-1 URL的使用import .*;public cl
9、ass URLTest public static void main(String args) try URL hp=new URL(http:/:80/file); System.out.println(Protocol:+hp.getProtocol(); System.out.println(Port:+hp.getPort(); System.out.println(Host:+hp.getHost(); System.out.println(File:+hp.getFile(); System.out.println(Ext:+hp.toExternalForm(); catch(
10、MalformedURLException e) System.out.println(e.toString(); 运行结果-运行结果15Protocol:httpPort:80Host:File:/fileExt:http:/ .*;import java.io.*;public class UrlSitepublic static void main(String args)if(args.length1)System.out.println(没有给出URL);System.exit(1);elsefor(int i=0;iargs.length;i+)urlSite(argsi);18p
11、ublic static void urlSite(String urlname)String s;URL url=null;InputStream urlstream=null;tryurl=new URL(urlname);catch(Exception e)System.out.println(URL名字错误);tryurlstream=url.openStream();DataInputStream dat=new DataInputStream(urlstream);while(s=dat.readLine()!=null)System.out.println(s);catch(IO
12、Exception e)System.out.println(URL文件打开错误);19键入java UrlSite file:/e:/UrlSite.java的运行结果若键入java UrlSite http:/?例12-3 URL类使用举例import .*;import java.io.*;public class URL12_3 public static void main(String args) try URL urladd=new URL(http:/ System.out.println(urladd.getAuthority(); System.out.println(ur
13、ladd.getDefaultPort(); System.out.println(urladd.getFile(); System.out.println(urladd.getHost(); System.out.println(urladd.getPath(); System.out.println(urladd.getProtocol();20BufferedReader readur1=new BufferedReader(new InputStreamReader(urladd.openStream();String content=;String line=;while(line=
14、readur1.readLine()!=null)content+=line;readur1.close();FileWriter outfile=new FileWriter(D:output.html);outfile.write(content);outfile.close(); catch(Exception e)e.printStackTrace(); 21运行结果80/technetwork/java/ URLConnection类一个URLConnection对象代表一个Java程序与URL资源的通讯连接。通过它可对这个URL资源读或写。通过openConnection方法,获得
15、URLConnection类对象 1、创建URLConnection类的对象URL url=new URL(“http:/” ):URLConnection connect=url.openConnection(); URLConnection url. openConnection()成功,返回一个URLConnection对象不成功,抛出IOException例外242、建立输入/输出数据流URLConnection类的读写渠道 getInputStream() getOutputStream()URL资源25例12-4使用URLConnection类获取远程服务器端的数据import .
16、*;import java.io.*;public class Connect12_4public static void main(String args)String urlname=“http:/;String s;URL url=null;URLConnection conn=null;InputStream in=null;tryurl=new URL(urlname);conn=url.openConnection();catch(Exception e)System.out.println(URL名字错误); tryin=conn.getInputStream();DataInp
17、utStream dat=new DataInputStream(in);while(s=dat.readLine()!=null)System.out.println(s);dat.close(); catch(Exception e)System.out.println(URL文件打开错误); 26运行结果(部分信息)ar mediav_ad_width = 950;var mediav_ad_height = 90;var mediav_default_turl = http:/ mediav_default_material = http:/ mediav_ad_listenurl=h
18、ttp:/ mediav_default_clickurl = http:/ _a=new Image();_a.src=http:/ public static static InetAddressInetAddress getByNamegetByName(String host) (String host) hosthost可以是一个机器名,也可以是一个可以是一个机器名,也可以是一个IPIP地址或一个地址或一个DSNDSN域名。域名。public static public static InetAddressInetAddress getLocalHostgetLocalHost()
19、() 这二个方法通常会产生UnknownHostException例外,应在程序中捕获处理。InetAddress类的主要方法:public byte public byte getAddressgetAddress()():获得本对象的:获得本对象的IPIP地址地址(存放在字节数组中)。(存放在字节数组中)。public public StringString getHostAddressgetHostAddress()():获得本对象的:获得本对象的IPIP地址地址“% %d.%d.%d.%dd.%d.%d.%d”。public public StringString getHostNam
20、egetHostName()():获得本对象的机器名。:获得本对象的机器名。12.2.4 InetAddress类29import .*;public class getIP12_5public class getIP12_5public static void main(String args) public static void main(String args) InetAddress pku = null; InetAddress pku = null; try try pku = InetAddress.getByName( pku = InetAddress.getByName(
21、);); catch(UnknownHostException e) catch(UnknownHostException e) System.out.println(pku); System.out.println(pku); 例例12-5 使用使用InetAddress查找查找IP地址地址 通过InetAddress,可以获取本机的IP地址:import .*;public class getLocalHostTest public static void main(String args) InetAddress myIP = null; try myIP = InetAddress.g
22、etLocalHost(); catch(UnknownHostException e) System.out.println(myIP); 例例12-6 使用使用InetAddress获取本机获取本机IP地址地址A-6F708DEE6CE74/169.254.120.633112.3 Socket通信 端到端的连接与通信 网络上的两个程序(进程)通过一个双向的通信连接实现数据的交换。 双向链路的一端称为一个socket(套接字) 主机端口(用于区分同一台主机上的不同的通信应用进程:01023系统 102465535用户)3212.3.1 TCP与Socket 有连接的服务中,服务器进程端口绑
23、定一个Socket,监听客户请求 请求 服务进程 响应请求 服务进程与客户进程各绑定一个Socket,进行相互通讯。3312.3.2 UDP与Datagrams 使用UDP协议传送数据时,把数据分割为各自独立的多个数据报(Datagrams), 分别发送,数据报是否到达、到达顺序以及内容是否正确不保证。 IP以及端口地址包含在报头中3412.3.3 使用Socket编程使用socket在Client程序和Server程序间建立连接(通讯的通道)1、 Socket 编程步骤 创建socket 打开连接到socket的输入/输出流。 按照一定的协议对socket进行读写操作,实现所要完成的主要工作
24、。 关闭socket352、Socket类的构造方法 构造方法: Socket(InetAddress addr , int port) Socket(String addr , int port) 因是TCP支持类,所以需要端口号。 使用该类扮演客户机的角色。 TCP连接会涉及客户机/服务器双方端口号。但客户机端口由TCP/IP软件自动分配。 方法: InputStream getInputStream(); outputStream getoutputStream();363、使用Socket编程Server端通讯过程Client端通讯过程在某端口创建ServerSocket对象提供监听等
25、待并接收Client端的请求利用返回的Socket对象与Client端通讯关闭Socket结束与此Client的通讯关闭监听创建Socket对象向Server某端口请求利用此Socket对象与Server端通讯关闭Socket结束与此Server的通讯建立连接数据通讯拆除连接37Client/试图连接Socket(host;port#)OutputStreamInpotStreamSocket.close()Server/占用某个端口ServerSocket(hostport)/等待连接ServerSocket.accept()Socket()OutputStreamInpotStreamSo
展开阅读全文