第11章 Java网络编程基础.ppt
第第1111章章 网络编程基础网络编程基础11.1 11.1 网络编程基础知识网络编程基础知识 11.1.1 11.1.1 网络编程基本理论网络编程基本理论 在在TCP/IPTCP/IP协议的层次结构中,传输层提供在源协议的层次结构中,传输层提供在源结点和目标结点的两个实体之间可靠的端到端结点和目标结点的两个实体之间可靠的端到端数据传输,数据传输,TCP/IPTCP/IP模型提供了了两种传输协议,模型提供了了两种传输协议,即传输控制协议即传输控制协议TCPTCP和用户数据报协议和用户数据报协议UDPUDP。TCPTCP是面向连接的协议,在传递数据之前必须是面向连接的协议,在传递数据之前必须和目标结点建立连接,然后再传送数据,传送和目标结点建立连接,然后再传送数据,传送数据结束后,关闭连接。而数据结束后,关闭连接。而UDPUDP是一种无连接是一种无连接协议,无须事先建立连接即可直接传送带有目协议,无须事先建立连接即可直接传送带有目标结点信息的数据报标结点信息的数据报 11.1 11.1 网络编程基础知识网络编程基础知识 11.1.1 11.1.1 网络编程基本理论网络编程基本理论 端口(端口(PortPort)和和IPIP地址为网络通信的应地址为网络通信的应用程序提供了一种确定的地址标识,用程序提供了一种确定的地址标识,IPIP地址表示了发送端口的目的计算机,而地址表示了发送端口的目的计算机,而端口表明了将数据包发送给目的计算机端口表明了将数据包发送给目的计算机上的哪一个应用程序上的哪一个应用程序 11.1 11.1 网络编程基础知识网络编程基础知识 11.1.2 11.1.2 网络编程的基本概念网络编程的基本概念 1 1、IPIP地址地址用于标识网络上的计算机或者其它网络设备,由用于标识网络上的计算机或者其它网络设备,由4 4个字节组成个字节组成 2 2、TCP TCP 与与UDPUDPTCPTCP提供两台计算机之间无差错的可靠数据传输,提供两台计算机之间无差错的可靠数据传输,是面向连接的通信协议。是面向连接的通信协议。UDPUDP是无连接通信协议,不保证可靠的数据传输是无连接通信协议,不保证可靠的数据传输 ,收到数据方无须确认,收到数据方无须确认 11.1 11.1 网络编程基础知识网络编程基础知识 11.1.2 11.1.2 网络编程的基本概念网络编程的基本概念 3 3、SocketSocket套接字套接字SocketSocket套接字是网络驱动层提供给应用程序编程套接字是网络驱动层提供给应用程序编程的接口和管理方法,处理数据接收与输出的接口和管理方法,处理数据接收与输出 4 4、数据报、数据报datagraphdatagraph是一种面向非连接的、以数据报方式工作的通信,是一种面向非连接的、以数据报方式工作的通信,适用于网络层不可靠的数据传输与访问适用于网络层不可靠的数据传输与访问 5 5、URLURL网络统一资源定位器,确定数据在网络中的位置网络统一资源定位器,确定数据在网络中的位置 11.1 11.1 网络编程基础知识网络编程基础知识 11.1.3 11.1.3 网络编程的基本方法网络编程的基本方法 JavaJava语言专门为网络通信提供了系统软件语言专门为网络通信提供了系统软件包包,利用它提供的有关类及方利用它提供的有关类及方法可以快速开发基于网络的应用程序法可以快速开发基于网络的应用程序 11.2 11.2 URLURL编程编程 11.2.1 11.2.1 URLURL的构成的构成 URLURL用来标识用来标识InternetInternet的资源,包括取得的资源,包括取得获得资源采用的地址,通过获得资源采用的地址,通过URLURL可以访问可以访问InternetInternet的文件和其它资源。的文件和其它资源。URLURL的一般的一般格式是:格式是:protocol:/protocol:/hostName:port/resourcePahostName:port/resourcePathth 即:即:协议名:协议名:/主机名:端口号主机名:端口号/资源路径资源路径 11.2 11.2 URLURL编程编程 11.2.2 11.2.2 URLURL类类 URLURL的构造方法很多,主要包括:的构造方法很多,主要包括:public public URLURL(StringString urlurl)如:如:URL url1=new URL url1=new URL(http:/);URL(http:/);public public URLURL(URL URL baseURL,StringbaseURL,String relativeURLrelativeURL)baseURLbaseURL绝对地址,绝对地址,relativeURLrelativeURL相对位置相对位置 11.2 11.2 URLURL编程编程 11.2.2 11.2.2 URLURL类类 2 2、URLURL类的主要方法类的主要方法URLURL类提供了很多方法,主要用于设置或者类提供了很多方法,主要用于设置或者获取有关参数,如:获取有关参数,如:getContentgetContent()/()/获取获取URLURL的内容的内容getDefaultPortgetDefaultPort()()/获获取取URLURL的的默默认认端口端口11.2 11.2 URLURL编程编程 例例1 1:利用:利用URLURL打开中国爱心网站和打开中国爱心网站和JavaJava资源网资源网 1.1.import import java.awtjava.awt.*;.*;2.2.import import java.awt.eventjava.awt.event.*;.*;3.3.import import .*;.*;4.4.import import java.applet.Appletjava.applet.Applet;5.5.class class HomeButtonHomeButton extends Button extends Button6.6.String String name;URLname;URL home;home;11.2 11.2 URLURL编程编程 7.7.HomeButton(StringHomeButton(String name,Stringname,String site)site)8.8.setLabel(namesetLabel(name););9.9.tryhometryhome=new=new URL(siteURL(site););10.10.catch(MalformedURLExceptioncatch(MalformedURLException e)e)11.11.12.12.13.13.public class public class GoHomeGoHome extends Applet implements extends Applet implements ActionListenerActionListener 14.14.HomeButtonHomeButton loveHomeloveHome=new=new HomeButtonHomeButton(中国爱心中国爱心网网,http:/,http:/););15.15.HomeButtonHomeButton javaHomejavaHome=new=new HomeButton(Java,http:/HomeButton(Java,http:/););11.2 11.2 URLURL编程编程 16.16.public void init()public void init()17.17.add(loveHomeadd(loveHome););18.18.add(javaHomeadd(javaHome););19.19.loveHome.addActionListener(thisloveHome.addActionListener(this););20.20.javaHome.addActionListener(thisjavaHome.addActionListener(this););21.21.public void public void actionPerformed(ActionEventactionPerformed(ActionEvent e)e)22.22.HomeButtonHomeButton btnbtn=(=(HomeButton)e.getSourceHomeButton)e.getSource();();23.23.getAppletContext().showDocument(btn.homegetAppletContext().showDocument(btn.home););24.24.25.25.11.2 11.2 URLURL编程编程 11.2.3 11.2.3 利用利用URLURL获取网络多媒体资源获取网络多媒体资源1 1、图像的获取、图像的获取Java AppletJava Applet可以使用可以使用getImagegetImage方法直接从方法直接从WEBWEB服服务器上获取图像资源,包括务器上获取图像资源,包括GIFGIF文件和文件和JPEG/JPGJPEG/JPG文件文件 2 2、声音的获取、声音的获取利用利用AppletApplet类的类的playplay方法可以直接播放网络上的方法可以直接播放网络上的声音文件,也可以使用方法声音文件,也可以使用方法getAudioClipgetAudioClip从网从网络上获取声音资源,生成络上获取声音资源,生成AudioClipAudioClip类型的对类型的对象,并进行处理象,并进行处理11.2 11.2 URLURL编程编程 例例2 2:读出:读出 import java.appletjava.applet.*;.*;2.2.import import .*;import.*;import java.awtjava.awt.*;.*;3.3.public class public class NetPictureCallNetPictureCall extends Applet extends Applet4.4.Image gif;Image gif;5.5.public void init()public void init()6.6.String String site=http:/ URL(siteURL(site););8.8.catch(Exceptioncatch(Exception e)e)9.9.public void public void paint(Graphicspaint(Graphics g)g)10.10.g.drawImage(gif,0,0,this);g.drawImage(gif,0,0,this);11.2 11.2 URLURL编程编程 11.2.4 11.2.4 URLConnectionURLConnection类类 1 1、URLURL连接的创建连接的创建URLConnectionURLConnection类的构造方法只有一个,即:类的构造方法只有一个,即:URLConnection(URLURLConnection(URLurlurl)/)/构建一个与构建一个与URLURL的连接的连接 11.2 11.2 URLURL编程编程 11.2.4 11.2.4 URLConnectionURLConnection类类 URLConnectionURLConnection类的方法很多,可以返回或类的方法很多,可以返回或者设置资源长度、最新更新时间、编码、者设置资源长度、最新更新时间、编码、标题、缓冲区、许可证等全方位的信息。标题、缓冲区、许可证等全方位的信息。用户创建了用户创建了URLURL类对象后,通过其类对象后,通过其openConnectionopenConnection方法获得方法获得URLConnectionURLConnection类的对象类的对象 11.2 11.2 URLURL编程编程 11.2.4 URLConnection类类 2 2、读写操作、读写操作建立好了建立好了URLURL连接,就可针对这个连接的输入流连接,就可针对这个连接的输入流(InputStreamInputStream)进行读操作,也可以可以针进行读操作,也可以可以针对这个连接的输出流(对这个连接的输出流(OutStreamOutStream)进行写操进行写操作,这时需要先调用方法作,这时需要先调用方法setDoOutputsetDoOutput将输入将输入(OutputOutput)属性设置为真(属性设置为真(truetrue),),指定该连指定该连接后写入内容接后写入内容 11.2 11.2 URLURL编程编程 11.2.4 11.2.4 URLConnectionURLConnection类类 3 3、使用、使用URLConnectionURLConnection类进行通信的基本步骤类进行通信的基本步骤创建创建URLConnectionURLConnection类的对象类的对象第一步:建立第一步:建立URLURL对象,第二步调用这个对象的对象,第二步调用这个对象的openConnectionopenConnection方法,返回一个对应其方法,返回一个对应其URLURL地址地址的的URLConnectionURLConnection对象。对象。建立输入输出数据流建立输入输出数据流利用利用URLConnectionURLConnection类的方法类的方法getInputStreamgetInputStream和和getOutputStreamgetOutputStream获取输入输出数据流。获取输入输出数据流。从远程计算机节点上读取信息或者写入信息从远程计算机节点上读取信息或者写入信息 11.3 11.3 SocketSocket编程编程 11.3.1 11.3.1 SocketSocket通信机制通信机制 1 1、SocketSocket通信的步骤通信的步骤 建建立立SocketSocket连连接接:通通信信开开始始之之前前由由双双方方确确认,建立一条专用虚拟连接通道认,建立一条专用虚拟连接通道数据通信:利用虚拟通道传送数据数据通信:利用虚拟通道传送数据拆拆除除连连接接:通通信信结结束束后后,将将建建立立的的虚虚拟拟连连接拆除接拆除11.3 11.3 SocketSocket编程编程 11.3.1 11.3.1 SocketSocket通信机制通信机制 2 2、SocketSocket类和类和ServerSocketServerSocket 包包中中提提供供了了两两个个类类:SocketSocket类类和和ServerSocketServerSocket类类,分分别别用用于于客客户户端端和和服服务务器器端端的的SocketSocket通通信信,网网络络通通信信的的方方法法都都封封装在这两个类中装在这两个类中 11.3 11.3 SocketSocket编程编程 11.3.1 11.3.1 SocketSocket通信机制通信机制 ServerSocket(intServerSocket(int port)port)/在在指指定定的的端端口口上上创建服务器创建服务器SocketSocket对象对象ServerSocket(intServerSocket(int port,intport,int count)count)/在在指指定定的的端端口口上上创创建建服服务务器器SocketSocket对对象象,并并指指定定服服务器能够支持的最大连接数务器能够支持的最大连接数Socket(InetAddressSocket(InetAddress IP,intIP,int port)port)/使使用用指指定定IPIP地址和端口建立地址和端口建立SocketSocket对象对象Socket(StringSocket(String host,inthost,int port)port)/使使用用指指定定主机和端口建立主机和端口建立SocketSocket对象对象11.3 11.3 SocketSocket编程编程 11.3.1 11.3.1 SocketSocket通信机制通信机制 Socket(InetAddressSocket(InetAddress IP,intIP,int port,booleanport,boolean stream)stream)/使使用用指指定定IPIP地地址址和和端端口口建建立立SocketSocket对象,布尔值对象,布尔值streamstream表示是否采用流式通信方式。表示是否采用流式通信方式。Socket(StringSocket(String host,inthost,int port,booleanport,boolean stream)stream)/使使用用指指定定主主机机和和端端口口建建立立SocketSocket对对象,布尔值象,布尔值streamstream表示是否采用流式通信方式表示是否采用流式通信方式