您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > uml与面向对象系统分析与设计与java12
JAVA网络编程第十讲网络通信1、网络基本概念2、Java与Internet3、使用InetAddress4、使用URL5、Socket通信6、数据报通信JAVA网络编程TCP/IP(TransmissionControlProtocol传输控制协议/InternetProtocol网间协议)是Internet的主要协议,定义了计算机和外设进行通信所使用的规则。TCP/IP网络参考模型包括五个层次:应用层、传输层、网络层、链路层、物理层。ISO/OSI网络参考模型则包括七个层次:应用层、表示层、会话层、传输层、网络层、链路层、物理层。1、网络基本概念物理层JAVA网络编程大多数基于Internet的应用程序被看作TCP/IP网络的最上层——应用层,如:ftp,http,smtp,pop3,telnet,nntp等。网络层对TCP/IP网络中的硬件资源进行标识。连接到TCP/IP网络中的每台计算机(或其他设备)都有唯一的地址,这就是IP地址。IP地址实质上是一个32位的整数,通常以“%d.%d.%d.%d”的形式表示,每个d是一个8位整数。在TCP/IP网络中,不同的机器之间进行通信时,数据的传输是由传输层控制的,这包括数据要发往的目标机器及应用程序、数据的质量控制等。TCP/IP网络中最常用的传输协议就是TCP(TransportControlProtocol)和UDP(UserDatagramProtocol)。1、网络基本概念JAVA网络编程一台机器通常只通过一条链路连接到网络上,即它只有一个IP地址,但一台机器中往往有很多应用程序需要进行网络通信,如何区分呢?这就要靠网络端口号(port)了。端口号是一个标记机器的逻辑通信信道的正整数,端口号不是物理实体。IP地址和端口号组成了所谓的Socket,Socket是网络上运行的程序之间双向通信链路的最后终结点,它是TCP和UDP的基础。网络服务httpftp其他服务23telnet端口2180客户程序SocketIP,portIP与端口号组合而得出的Socket,可以完全分辨Internet上运行的程序。1、网络基本概念JAVA网络编程端口号是用一个16位的整数来表达的,其范围为0~65535,其中0~1023为系统所保留,专门给那些通用的服务(well-knownservices),如http服务的端口号为80,telnet服务的端口号为21,ftp服务的端口为23,…因此,当我们编写通信程序时,应选择一个大于1023的数作为端口号,以免发生冲突。1、网络基本概念JAVA网络编程传输层通常以TCP和UDP协议来控制端点到端点的通信。用于通信的端点是由Socket来定义的,Socket是由IP地址和端口号组成的。传输控制协议(TCP)是在端点与端点之间建立持续的连接而进行通信。建立连接后,发送端将发送的数据印记了序列号和错误检测代码,并以字节流的方式发送出去;接收端则对数据进行错误检查并按序列顺序将数据整理好,数据在需要时可以重新发送,因此整个字节流到达接收端时完好无缺。这与两个人打电话的情形是相似的。TCP协议具有可靠性和有序性,并且以字节流的方式发送数据,它通常被称为流通信协议。1、网络基本概念JAVA网络编程与TCP协议不同,用户数据报协议(UDP)则是一种无连接的传输协议。利用UDP协议进行数据传输时,首先需要将要传输的数据定义成数据报(Datagram),在数据报中指明数据所要达到的端点(Socket,主机地址和端口号),然后再将数据报发送出去。这种传输方式是无序的,也不能确保绝对的安全可靠,但它很简单也具有比较高的效率,这与通过邮局发送邮件的情形非常相似。1、网络基本概念JAVA网络编程1、网络基本概念JAVA网络编程TCP协议和UDP协议各有各的用处。当对所传输的数据具有时序性和可靠性等要求时,应使用TCP协议;当传输的数据比较简单、对时序等无要求时,UDP协议能发挥更好的作用,如ping、发送时间数据等。1、网络基本概念JAVA网络编程2、Java与Internet——Java中的网络通信网络应用是Java语言取得成功的领域之一,它已经成为现在Internet上最流行的一种编程语言。Java语言在网络编程方面提供了许多方便,其他语言往往需要数页代码才能完成的事情,在Java中可能只需要一条语句就可以。Java的网络通信分为三个层次:最高一级的网络通信就是我们上一讲中所涉及到的从网络上下载Applet。客户端浏览器通过HTML文件中的applet标记来识别Applet,并解析Applet的属性,通过网络获取Applet得字节码文件。(由浏览器提供)上一讲中所涉及到的声音播放和图象显示,其中声音文件和图象文件的获取是次一级的通信。通过类URL的对象指明文件所在位置,并从网络上下载声音和图象文件。(由Java开发环境提供)最低一级的通信是利用java.net包中提供的类直接在程序中实现网络通信。(由Java语言开发包提供)JAVA网络编程2、Java与Internet——Java中的网络支持针对网络通信的不同层次,Java提供的网络功能有四大类:InetAddress、URLs、Sockets、Datagram。InetAddress面向的是网络层(IP层),用于标识网络上的硬件资源。URL面向的应用层,通过URL,Java程序可以直接送出或读入网络上的数据。Sockets和Datagram面向的则是传输层。Sockets使用的是TCP协议,这是传统网络程序最常用的方式,可以想象为两个不同的程序通过网络的通信信道进行通信。Datagram则使用UDP协议,是另一种网络传输方式,它把数据的目的地纪录在数据包中,然后直接放在网络上。JAVA网络编程2、Java与Internet——Java中的网络支持java.net包中的主要的类和可能产生的例外包括:面向IP层的类:InetAddress(Inet4Address,Inet6Address)面向应用层的类:URL、URLConnection面向网络层的类:TCP协议相关类:Socket、ServerSocketUDP协议相关类:DatagramPacket、DatagramSocket、MulticastSocket可能产生的例外:BindException、ConnectException、MalformedURLException、NoRouteToHostException、ProtocolException、SocketException、UnknownHostException、UnknownServiceExceptionJAVA网络编程类InetAddress可以用于标识网络上的硬件资源,它提供了一系列方法以描述、获取及使用网络资源。InetAddress类没有构造函数,因此不能用new来构造一个InetAddress实例。通常是用它提供的静态方法来获取:publicstaticInetAddressgetByName(Stringhost):host可以是一个机器名,也可以是一个形如“%d.%d.%d.%d”的IP地址或一个DSN域名。publicstaticInetAddressgetLocalHost()publicstaticInetAddress[]getAllByName(Stringhost)publicstaticInetAddressgetByAddress(Stringhost,Byte[]addr)这些方法通常会产生UnknownHostException例外,应在程序中捕获处理。以下是InetAddress类的几个主要方法,通过上述方法获得InetAddress类的实例后就可以使用:publicbyte[]getAddress():获得本对象的IP地址(存放在字节数组中)。publicStringgetHostAddress():获得本对象的IP地址“%d.%d.%d.%d”。publicStringgetHostName():获得本对象的机器名。3、使用InetAddressJAVA网络编程下面的例子演示Java如何根据域名自动到DNS(域名服务器)上查找IP地址(与DNS服务器的连接减至一行):publicclassgetIP{publicstaticvoidmain(Stringargs[]){InetAddresspku=null;try{pku=InetAddress.getByName(“”);}catch(UnknownHostExceptione){}System.out.println(pku);}}3、使用InetAddressgetIP.javaJAVA网络编程通过InetAddress,可以获取本机的IP地址:publicclassgetLocalHostTest{publicstaticvoidmain(){InetAddressmyIP=null;try{myIP=InetAddress.getLocalHost();}catch(UnknownHostExceptione){}System.out.println(myIP);}}3、使用InetAddressgetLocalHostTest.javaJAVA网络编程4、使用URLURL是统一资源定位符(UniformResourceLocator)的简称,它表示Internet上某一资源的地址。Internet上的资源包括HTML文件、图象文件、声音文件、动画文件以及其他任何内容(并不完全是文件,也可以是一个对数据库的查询等)。通过URL,就可以访问Internet。浏览器或其他程序通过解析给定的URL就可以在网络上查找相应的文件或其他资源。JAVA网络编程4、使用URL一个URL包括两部分内容:协议名称和资源名称,中间用冒号隔开:Protocol:resourceName如:协议名称指的是获取资源时所使用的应用层协议,如http,ftp,file等;资源名称则是资源的完整地址,包括主机名、端口号、文件名或文件内部的一个应用。当然,并不是所有的URL都必须包含这些内容。://gis.pku.edu.cn/javaCourse/Techdoc/ch1.ppt网络编程4、使用URL——在Java中构造URL在java.net包中,提供了类URL来表示URL。类URL提供了很多构造方法来生成一个URL对象:publicURL(Stringspec)publicURL(URLcontext,Stringspec)publicURL(Stringprotocol,Stringhost,Stringfile)publicURL(Stringprotocol,Stringhost,intport,Stringfile)以下是一些具体的构造实例:URLurl1=newURL(“”);URLbase=newURL(“”);URLurl2=newURL(base,“mywork1.html”);URLurl3=newURL(base,“mywork2.html”);URLurl4=newURL(“http”,“gis.pku.edu.cn”,“/~lyw/test.html”);URLurl5=newURL(“http”,“”,8080,“/java/network.html”);另外还有两种稍微复杂些的构造方法(参见JDK文档)。JAVA网络编程当创建UR
本文标题:uml与面向对象系统分析与设计与java12
链接地址:https://www.777doc.com/doc-3401930 .html