第12章网络程序设计课件.ppt
《第12章网络程序设计课件.ppt》由会员分享,可在线阅读,更多相关《第12章网络程序设计课件.ppt(85页珍藏版)》请在三一办公上搜索。
1、1,第12章 网络程序设计,2,12.1 网络的基本概念,java语言是Internet上的世界语。网络应用是Java语言取得成功的领域之一,它已经成为现在Internet上最流行的一种编程语言。Java语言在网络编程方面提供了许多方便,其他语言往往需要数页代码才能完成的事情,在Java中可能只需要一条语句就可以。,3,1、Java的网络通信分为三个层次:最高一级的网络通信:从网络上下载Applet。客户端浏览器通过HTML文件中的标记来识别Applet,并解析Applet的属性,通过网络获取Applet得字节码文件。(由浏览器提供)声音文件和图象文件的获取是次一级的通信。通过类URL的对象指
2、明文件所在位置,并从网络上下载声音和图象文件。(由Java开发环境提供)最低一级的通信是利用包中提供的类直接在程序中实现网络通信。(由Java语言开发包提供),4,2、网络协议,应用层:使用URL、URLConnection 类,传输层:使用Socket、ServerSocket 类,5,3、Java中的网络支持,包中的主要的类和可能产生的例外包括:面向IP层的类:InetAddress面向应用层的类:URL、URLConnection面向网络层的类:TCP协议相关类:Socket、ServerSocketUDP协议相关类:DatagramPacket、DatagramSocket、Multi
3、castSocket可能产生的例外:BindException、ConnectException、MalformedURLException、NoRouteToHostException、ProtocolException、SocketException、UnknownHostException、UnknownServiceException,3、Java中的网络支持,6,4、传输层协议TCP与UDP,TCP(Transport Control Protocol)两主机之间有连接的、可靠的、端对端(end-to-end)的数据流的传输如http,ftp,telnet 的传输层均使用此协议UDP
4、(User Datagram Protocol)从一台机器向另一台机器以无连接的、数据报的方式进行通讯的协议如:email可以使用UDP,7,5、主机与端口,如何确定通讯的目标,两部分:主机使用IP地址或域名端口,用于区分同一台主机上的不同的进行通讯的应用进程端口01023系统使用102465535用户使用,最好8000以上,8,6、Java与网络,Java提供的网络功能有三大类:URL,Socket,Datagram.URL是三大功能中最高级的一种,通过URL Java程序可以直接送出或读入网络上的数据.Socket是传统网络程序最常用的方式,可以想象为两个不同的程序通过网络的通信信道.Da
5、tagram是更低级的网络传输方式,它把数据的目的纪录在数据包中,然后直接放在网络上.,9,12.2 URL的使用,在WWW上,每一信息资源都有统一的且唯一的地址,该地址就叫URL(Uniform Resource Locator),它是WWW的统一资源定位标志。12.2.1 URL的组成资源类型(协议)存放资源的主机域名资源文件名端口,10,用字符串表示Internet网络上资源的地址,指向World Wide Web 上的一个资源。http:/:80/dir/file.htm协议名(http、ftp、file等)资源位置(主机域名,也可用IP地址)端口号(服务器监听程序的端口。WWW服务端
6、口隐含值为80,FTP 21,Telnet 23)路径名(文件在机器中的路径名。资源文件或CGI程序等)引用(#指向资源文件的某一个位置),11,12.2.2 URL类,.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.htm
7、l”);,12,3)URL(String protocol,String host,int port,String file)4)URL(String protocol,String host,String file)使用缺省80端口注意:构造函数抛出MalformedURLException,13,URL类的常用方法,方法1 取出URL的指定成分信息 url1.getProtocol()/协议名 url1.getHost()/主机名 url1.getPort()/端口号 url1.getFile()/文件名方法2 InputStream url1.openStream()/获得一个输入流St
8、ring toString()/将此URL对象转换为字符串的形式,14,例12-1 URL的使用,import.*;public class 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.
9、getFile();System.out.println(Ext:+hp.toExternalForm();catch(MalformedURLException e)System.out.println(e.toString();,运行结果-,运行结果,15,Protocol:httpPort:80Host:File:/fileExt:http:/,16,*利用URL获取网络资源,创建URL对象使用URL对象的openStream()方法,返回一个InputStream。从此InputStream即可读入相应资源。,17,例12-2使用URL类获取远程服务器端的数据,import.*;imp
10、ort 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);,18,public static void urlSite(String urlname)String s;URL url=null;InputStream urlstream=null;tryurl=new URL(urlname);catch
11、(Exception e)System.out.println(URL名字错误);tryurlstream=url.openStream();DataInputStream dat=new DataInputStream(urlstream);while(s=dat.readLine()!=null)System.out.println(s);catch(IOException e)System.out.println(URL文件打开错误);,19,键入java UrlSite file:/e:/UrlSite.java的运行结果,若键入java UrlSite http:/?,例12-3 U
12、RL类使用举例,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(urladd.getDefaultPort();System.out.println(urladd.getFile();System.out.println(urladd.getHost();System.out.println(urlad
13、d.getPath();System.out.println(urladd.getProtocol();,20,BufferedReader readur1=new BufferedReader(new InputStreamReader(urladd.openStream();String content=;String line=;while(line=readur1.readLine()!=null)content+=line;readur1.close();FileWriter outfile=new FileWriter(D:output.html);outfile.write(co
14、ntent);outfile.close();catch(Exception e)e.printStackTrace();,21,运行结果,80/technetwork/java/,22,23,12.2.3 URLConnection类,一个URLConnection对象代表一个Java程序与URL资源的通讯连接。通过它可对这个URL资源读或写。通过openConnection方法,获得URLConnection类对象 1、创建URLConnection类的对象URL url=new URL(“http:/”):URLConnection connect=url.openConnection(
15、);URLConnection url.openConnection()成功,返回一个URLConnection对象不成功,抛出IOException例外,24,2、建立输入/输出数据流,URLConnection类的读写渠道 getInputStream()getOutputStream(),25,例12-4使用URLConnection类获取远程服务器端的数据,import.*;import java.io.*;public class Connect12_4public static void main(String args)String urlname=“http:/;String
16、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();DataInputStream dat=new DataInputStream(in);while(s=dat.readLine()!=null)System.out.println(s);dat.close();catch(Exc
17、eption e)System.out.println(URL文件打开错误);,26,运行结果(部分信息),ar mediav_ad_width=950;var mediav_ad_height=90;var mediav_default_turl=http:/,27,28,类InetAddress可以用于标识网络上的硬件资源,它提供了一系列方法以描述、获取及使用网络资源。InetAddress类没有构造函数。通常是用它提供的静态方法来获取:public static InetAddress getByName(String host)host可以是一个机器名,也可以是一个IP地址或一个DSN
18、域名。public static InetAddress getLocalHost()这二个方法通常会产生UnknownHostException例外,应在程序中捕获处理。InetAddress类的主要方法:public byte getAddress():获得本对象的IP地址(存放在字节数组中)。public String getHostAddress():获得本对象的IP地址“%d.%d.%d.%d”。public String getHostName():获得本对象的机器名。,12.2.4 InetAddress类,29,import.*;public class getIP12_5pu
19、blic static void main(String args)InetAddress pku=null;try pku=InetAddress.getByName();catch(UnknownHostException e)System.out.println(pku);,例12-5 使用InetAddress查找IP地址,30,通过InetAddress,可以获取本机的IP地址:import.*;public class getLocalHostTest public static void main(String args)InetAddress myIP=null;try myI
20、P=InetAddress.getLocalHost();catch(UnknownHostException e)System.out.println(myIP);,例12-6 使用InetAddress获取本机IP地址,A-6F708DEE6CE74/169.254.120.63,31,12.3 Socket通信,端到端的连接与通信网络上的两个程序(进程)通过一个双向的通信连接实现数据的交换。双向链路的一端称为一个socket(套接字)主机端口(用于区分同一台主机上的不同的通信应用进程:01023系统 102465535用户),32,12.3.1 TCP与Socket,有连接的服务中,服务
21、器进程端口绑定一个Socket,监听客户请求请求服务进程 响应请求服务进程与客户进程各绑定一个Socket,进行相互通讯。,33,12.3.2 UDP与Datagrams,使用UDP协议传送数据时,把数据分割为各自独立的多个数据报(Datagrams),分别发送,数据报是否到达、到达顺序以及内容是否正确不保证。IP以及端口地址包含在报头中,34,12.3.3 使用Socket编程,使用socket在Client程序和Server程序间建立连接(通讯的通道)1、Socket 编程步骤创建socket打开连接到socket的输入/输出流。按照一定的协议对socket进行读写操作,实现所要完成的主要
22、工作。关闭socket,35,2、Socket类的构造方法,构造方法:Socket(InetAddress addr,int port)Socket(String addr,int port)因是TCP支持类,所以需要端口号。使用该类扮演客户机的角色。TCP连接会涉及客户机/服务器双方端口号。但客户机端口由TCP/IP软件自动分配。方法:InputStream getInputStream();outputStream getoutputStream();,36,3、使用Socket编程,Server端通讯过程,Client端通讯过程,37,4、socket通信,38,4、socket通信,建
23、立Socket在客户端:try Socket client=new Socket(host,4444);catch(IOException e)在服务器端:try ServerSocket server=new ServerSocket(4444);catch(IOException e)Socket socket=null;try socket=server.accept();/等待客户端连接catch(IOException e),39,5、Socket通信演示,演示一个简单的服务器与客户的交互,即服务器等待,客户访问,相互通一次信息.,40,Socket,.8.5 Socket,创建服务
24、器(端口号),定义数据成员,服务器等待网络连接,建立socket流,读客户 端信息,向用户发出一个字符串,创建Socket实例,定义数据成员,建立socket流,读socket流(接收并显示),送用户名给服务器,关闭流,waiting for user,127.0.0.1 1111,1111,login:,connetcting client.,java,提示用户登录成功,读socket流,User:java,Login successful,41,Socket,例:显示服务器与客户机间的通信(服务器端),PrintStream ps=null;DataInputStream dis=null
25、;String username;ServerSocket serverSocket=null;Socket clientSocket=null;,try serverSocket=new ServerSocket(1111);catch(IOException e)System.out.println(“Error”+e);System.exit(1);,try clientSocket=serverSocket.accept();catch(IOException e)System.out.println(Accept failed.);System.exit(1);,创建服务器(端口号)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 12 网络程序设计 课件
链接地址:https://www.31ppt.com/p-2163323.html