第13讲Java网络程序设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第13讲Java网络程序设计下一页上一页返回开始Java网络程序设计2主要内容1.Java与网络通信2.获取IP地址3.URL编程4.TCPSocket网络编程5.数据报通信下一页上一页返回开始Java网络程序设计31.Java与网络通信Java是针对网络环境的程序设计语言,提供了两个不同层次的网络支持机制:•利用URL访问网络资源•利用Socket通信支持Socket通信的类网络Java网络应用系统支持URL的类下一页上一页返回开始Java网络程序设计41.1TCP/IP协议Application(HTTP,FTP,telnet)Transport(TCP,UDP,..)Network(IP…)Link(devicedriver)Physics一般应用程序是靠TCP实现通讯功能,因为它们需要大量数据的无差错传输。TCP/IP(传输控制协议/网间协议)是Internet的主要协议,定义了计算机和外设进行通信所使用的规则。下一页上一页返回开始Java网络程序设计51.2Java中的网络功能针对网络通信的不同层次,Java提供的支持网络功能的类有:面向IP层的类:InetAddress面向应用层的类:URL、URLConnection面向传输层的类:TCP协议相关类:Socket、ServerSocketUDP协议相关类:DatagramPacket、DatagramSocket、MulticastSocket下一页上一页返回开始Java网络程序设计62.获取IP地址IP地址是Internet中的每台计算机都必须有的唯一地址。java.net包中的InetAddress类描述了IP地址,提供了一系列方法描述、获取及使用网络资源。InetAddress类没有构造方法,因此不能用new来构造一个InetAddress实例。通常是用它提供的静态方法来获取:publicstaticInetAddressgetLocalHost():读本机IP地址publicstaticInetAddressgetByName(Stringhost):读给定域名的IP地址publicstaticInetAddress[]getAllByName(Stringhost):从DNS上得到域名对应的所有的IP注意:这三个方法通常会产生UnknownHostException例外,应在程序中捕获。下一页上一页返回开始Java网络程序设计7InetAddress类的几个主要方法:publicbyte[]getAddress():获得本对象的IP地址(存放在字节数组中)。publicStringgetHostAddress():获得本对象的IP地址“%d.%d.%d.%d”。publicStringgetHostName():获得本对象的机器名。下一页上一页返回开始【例1】利用InetAddress类获取本机的IP地址或根据域名自动到域名服务器DNS上查找IP地址。importjava.net.*;publicclassGetLocalHost{publicstaticvoidmain(String[]arg){InetAddressmyIp=null;try{myIp=InetAddress.getLocalHost();//读本地机地址System.out.println(myIp);myIp=null;myIp=InetAddress.getByName();//根据域名自动到域名服务器DNS上查找IP地址。与DNS连不上,则进入捕获异常。System.out.println(myIp);}catch(UnknownHostExceptione){//捕获异常System.out.println(DNS错误!);}}}Java网络程序设计8运行结果如下:XP-ljr/110.182.2.233下一页上一页返回开始3.URL编程3.1URL简介3.2URL类3.3通过字节流访问简介URL(UniformResourceLocator)是统一资源定位器的简称,它表示Internet/Intranet上一个资源的引用或地址,这些资源可以是一个文件、一个目录或一个对象。URL是由一个字符串来描述的,URL包括协议和资源名称两部分,协议表示访问资源所需的协议,如HTTP、FTP等;资源名称表示要访问的资源地址,包括主机名、端口号、文件名或文件内部的一个引用。协议://主机名:端口号/文件名#引用下面是几个合法的URL例子:://home.netscape.com/home/welcome.html下一页上一页返回开始Java网络程序设计113.2URL类URL类提供了4个构造方法来生成一个URL对象:publicURL(Stringspec):使用指定的字符串创建一个URL对象。publicURL(URLcontext,Stringspec):使用基地址和相对URL创建一个URL对象。publicURL(Stringprotocol,Stringhost,Stringfile):使用指定的协议、主机名、文件名创建一个URL对象。publicURL(Stringprotocol,Stringhost,intport,Stringfile):使用指定的协议、主机名、端口号、文件名创建一个URL对象。注意:URL类的构造方法可能会产生MalformedURLException异常,需要对其进行处理。下一页上一页返回开始一个URL对象生成后,其属性是不能被改变的,但可以通过它给定的方法来获取这些属性:publicStringgetProtocol():获取该URL的协议名publicStringgetHost():获取该URL的主机名publicStringgetPort():获取该URL的端口号publicStringgetPath():获取该URL的文件路径publicStringgetFile():获取该URL的文件名publicStringgetRef():获取该URL在文件中的相对位置publicStringgetQuery():获取该URL的查询名Java网络程序设计12下一页上一页返回开始Java网络程序设计133.3通过字节流访问(),可以读取一个URL对象所指定的资源。publicfinalInputStreamopenStream()方法openStream()与指定的URL建立连接并返回一个InputStream对象,将URL位置的资源转成一个数据流。通过这个InputStream对象,就可以读取资源中的数据。URLJava程序InputStream下一页上一页返回开始Java网络程序设计14【例2】用URL获取网络资源的HTML文件importjava.net.*;importjava.io.*;publicclassURLReader{publicstaticvoidmain(Stringargs[]){try{URLgis=newURL();BufferedReaderin=newBufferedReader(newInputStreamReader(gis.openStream()));Stringline;while((line=in.readLine())!=null){System.out.println(line);}in.close();}catch(Exceptione){System.out.println(e);}}}下一页上一页返回开始运行结果如下:Java网络程序设计15下一页上一页返回开始Java网络程序设计163.4通过URLConnection类实现双向通信URLConnection类表示应用程序和URL资源之间的通信连接。通过URLConnection类,可以在应用程序和URL资源之间进行交互,既可以从URL中读取数据,也可以向URL中发送数据。通过URL类提供的方法openConnection(),可以获得一个URL连接(URLConnection)对象。publicURLConnectionopenConnection()客户端java程序OutputStreamInputStream服务器connection下一页上一页返回开始使用URLConnection类通信的步骤:1.建立连接URLurl=newURL(“”);URLConnectioncon=url.openConnection();2.向服务器端送数据PrintStreamps=newPrintStream(con.getOutputStream());ps.println(string_data);3.从服务器读数据BufferedReaderdis=newBufferedReader(newInputStreamReader(con.getInputStream()));dis.readLine();下一页上一页返回开始4.TCPSocket网络编程4.1URL通信与Socket通信的区别4.2Socket类4.3ServerSocket类4.4Socket编程步骤4.5TCPSocket网络编程举例下一页上一页返回开始Java网络程序设计194.TCPSocket网络编程TCP(TransportControlProtocol)两主机之间有连接的、可靠的、端对端(end-to-end)的数据流的传输如http,ftp,telnet的传输层均使用此协议为了支持TCP/IP面向连接的网络程序的开发,java.net包提供了Socket类与ServerSocket类,ServerSocket类和Socket类均直接继承于Java的Object根类。其中,ServerSocket类用于服务端程序,它有一个accept方法专门用来监听客户端的连接,并产生一个与客户端连接相对应的Socket对象;Socket类则是服务端程序和客户端程序都要用到的类,该类专门用来处理连接双方的数据通信。一个Socket由一个IP地址和一个端口号唯一确定。下一页上一页返回开始Java网络程序设计204.1URL通信与Socket通信的区别URL通信与Socket通信都是面向连接的通信。它们的区别在于:(1)Socket通信方式为主动等待客户端的服务请求方式。而URL通信方式为被动等待客户端的服务请求方式。(2)利用Socket进行通信时,在服务器端运行了一个Socket通信程序,不停地监听客户端的连接请求,当接到客户端请求后,马上建立连接并进行通信。利用URL进行通信时,在服务器端常驻一个CGI程序,但它一直处于睡眠状态,只有当客户端的连接请求到达时才被唤醒,然后建立连接并进行通信。(3)在Socket通信方式中,服务器端的程序可以打开多个线程与多个客户端进行通信,并且还可以通过服务器使各个客户端之间进行通信,这种方式适合于一些较复杂的通信。而在URL通信方式中,服务器端的程序只能与一个客户进行通信,这种方式比较适合于B/S通信模式。下一页上一页返回开始Java网络程序设计214.2Socket类Socket类的对象表示一个Socket。客户端使用Socket类的构造方法,创建一个Socket对象,创建的同时会自动向服务器方发起连接。Socket类的构造方法如下:Socket

1 / 68
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功