Java基本网络类.ppt

上传人:牧羊曲112 文档编号:6509694 上传时间:2023-11-07 格式:PPT 页数:38 大小:207.49KB
返回 下载 相关 举报
Java基本网络类.ppt_第1页
第1页 / 共38页
Java基本网络类.ppt_第2页
第2页 / 共38页
Java基本网络类.ppt_第3页
第3页 / 共38页
Java基本网络类.ppt_第4页
第4页 / 共38页
Java基本网络类.ppt_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《Java基本网络类.ppt》由会员分享,可在线阅读,更多相关《Java基本网络类.ppt(38页珍藏版)》请在三一办公上搜索。

1、Advanced Network Programming,Ren Jiansi,Networking Basics,Applications LayerStandard appsHTTPFTPTelnetUser appsTransport LayerTCPUDPProgramming Interface:SocketsNetwork LayerIPLink LayerDevice drivers,TCP/IP Stack,Application(http,ftp,telnet,),Transport(TCP,UDP,.),Network(IP,.),Link(device driver,.)

2、,Networking Basics,TCP(Transport Control Protocol)is a connection-oriented protocol that provides a reliable flow of data between two computers.Example applications:HTTPFTPTelnet,TCP/IP Stack,Application(http,ftp,telnet,),Transport(TCP,UDP,.),Network(IP,.),Link(device driver,.),Networking Basics,UDP

3、(User Datagram Protocol)is a protocol that sends independent packets of data,called datagrams,from one computer to another with no guarantees about arrival.Example applications:Clock serverPing,TCP/IP Stack,Application(http,ftp,telnet,),Transport(TCP,UDP,.),Network(IP,.),Link(device driver,.),Java基本

4、网络类,本章介绍了Java基本的网络类(InetAddress、URL、URLConnection和Socket)的使用,介绍如何利用Socket通信机制实现客户/服务器方式的一对一的通信,实现浏览器/服务器方式的网络聊天。,1 Java网络进程通信概述 网络编程一般指利用不同层次的通信协议提供的接口实现网络进程安全通信和应用的编程。网络进程就是网点机(连入网络的计算机)上运行的程序。网络进程在通信协议中用端口标识(port),它驻留的网点机用其IP地址或域名来标识。网络进程同步通信是指通信的发起者向接收者发出服务请求后,必须得到对方回应,才继续运行。如果通信的发起者向接收者发出服务请求后,可

5、以继续运行,需要时再获取接收者的响应,这叫异步通信。,网络协议工程就是利用软件工程的方法(分层次、分模块等技术)来解决复杂网络进程通信的问题。网络进程往往按照应用的需要,采用不同层次的协议进行通信。2 Java网络基本类2.1 InetAddress类InetAddress类用来描述Internet地址。1.获取本机的IP地址例1 用InetAddress类获取本机的IP地址。import.*;import java.io.*;,public class GetLocalHost public static void main(String arg)InetAddress myIp=null;

6、try myIp=InetAddress.getLocalHost();catch(UnknownHostException e)System.out.println(myIp);2.根据域名获得IP地址例2 根据域名自动到DNS上查找IP地址。,import.*;import java.io.*;public class GetIP public static void main(String args)InetAddress cug=null;try cug=InetAddress.getByName();catch(UnknownHostException e)System.out.pr

7、intln(cug);,getByName(),public static InetAddress getByName(String host)throws UnknownHostExceptionInetAddress utopia,duke;try utopia=InetAddress.getByName(utoa.poly.edu);duke=InetAddress.getByName(118.218.2.92);catch(UnknownHostException e)System.err.println(e);,2.2 URL类 URL(Uniform Resource Locato

8、r)是WWW资源统一资源定位器的简写,它规范了WWW资源网络定位地址的表示方法。WWW资源包括Web页、文本文件、图形文件、声频片段等。1.URL类简介 URL类定义了WWW资源的特征及读其内容的方法。其基本表示格式:protocol:/hostname:/resourcename#anchor 其中,protocol:使用的协议,它可以是http,ftp,news,telnet等;,hostname:主机名,指定域名服务器(DNS)能访问到的WWW服务的计算机,如:;port:端口号,是可选的,表示所连的端口号,如默认,将连接到协议默认的端口。resourcename:资源名,是主机上能访问

9、到的目录或文件;anchor:标记,也是可选的,它指定文件内的有特定标记的位置。URL例子:,(2)http:/www.ncsa.uiuc.edu:8080/demoweb/url-primer.htm(3)ftp:/local/demo/information#myinfo(4)file:/local/demo/readme.txt 第(2)个URL把标准Web服务器端口80指定为8080端口,第(3)个URL加上符号“#”,用于指定在文件information中标记为myinfo的部分。2.URL类对象 URL类的构造方法有如下四种。(1)URL(URL absoluteURL)例:URL

10、 myUni=URL(“http:/,(2)URL(URL url,String relativeURL)例:URL myUni=URL(“http:/URL mydoc=URL(myUni,”mydoc.html”)(3)URL(String protocol,String host,String resourcename)例:URL myUni=URL(“http”,”,”/mydoc.html”);等价于:URL myUni=URL(“http:/URL(String protocol,String host,int port,String resourcename),例:URL myU

11、ni=URL(“http”,”,80,”/mydoc.html”);等价于:URL myUni=URL(“http:/:80/mydoc.html”);3.URL类获取其特征的主要方法 String getProtocol();返回URL的协议名。String getHost();返回URL的主机名。Int getPort();返回URL的端口号,如果没有设置端口号返回值为1)。String getFile();返回URL的文件名及路径。String getRef();返回URL的标记。,4.用URL获取网上HTML文件 分为三步:(1)构造URL的对象:url=new URL(“http:/

12、”);(2)将DataInputStream类对象与url的 openStrean()流对象绑定:DataInputStream din=new DataInputStream(url.openStrean()(3)利用din 读HTML文件。,例3 用URL获取网络上资源的HTML文件:,import.*;import java.io.*;public class ReadURL static public void main(String args)try URL url=new URL(args0);DataInputStream din=new DataInputStream(url.

13、openStream();String inputLine;while(inputLine=din.readLine()!=null),System.out.println(inputLine);din.close();catch(MalformedURLException me)catch(IOException ioe)运行下列dos命令:就可以看到中国地质大学主页的HTML文件。,5.用URL获取文本和图像 文本数据源可以是网上或者本机上的任何文本文件。如果要用URL来获取图像数据,要使用方法getImage(URL)。这个方法会立即生成一个Image对象,并返回程序对象的引用,但这并不

14、意味着图像文件的数据已经读到了内存之中,而是系统与此同时产生一个线程去读取图像文件的数据。因此,就可能存在程序已经执行到了getImage()后面的语句部分,而系统还正在读图像文件数据的情形。例4 用URL来获取文本文件(.txt)和图像文件(.jpeg,.gif)。,import.*;import java.awt.*;import java.io.*;public class GetDataByURL extends FrameMenuBar menuBar;boolean drawImage=false;DataInputStream dataInputStream;int i=0;St

15、ring line_str;boolean first=true;Font font;,public GetDataByURL()menuBar=new MenuBar();setMenuBar(menuBar);Menu display=new Menu(display);menuBar.add(display);MenuItem beauty_display=new MenuItem(display beauty);MenuItem text_display=new MenuItem(display text);display.add(beauty_display);display.add

16、(text_display);setBackground(Color.white);,font=new Font(System,Font.BOLD,20);setTitle(sample:use URL get data);resize(400,300);show();public boolean action(Event evt,Object what)if(evt.target instanceof MenuItem)String message=(String)what;if(message=display beauty)drawImage=true;doDrawImage();,els

17、e drawImage=false;first=true;if(message=display text)doWrite(file:/d:/plbackup/tt.txt);return true;,public boolean handleEvent(Event evt)switch(evt.id)case Event.WINDOW_DESTROY:dispose();System.exit(0);default:return super.handleEvent(evt);static public void main(String args)new GetDataByURL();,publ

18、ic void paint(Graphics g)if(drawImage)try URL image_URL=new URL(file:/D:/plbackup/zy4.jpeg);Toolkit object_Toolkit=Toolkit.getDefaultToolkit();Image object_Image=object_Toolkit.getImage(image_URL);g.setColor(Color.white);g.fillRect(0,0,300,400);,g.drawImage(object_Image,40,80,160,200,this);catch(Mal

19、formedURLException e)else if(first)first=false;g.setColor(Color.white);g.fillRect(0,0,400,300);,g.setFont(font);if(line_str!=null)g.drawString(line_str,10,i*20);i+;private void doDrawImage()drawImage=true;repaint();,private void doWrite(String url_str)try URL url=new URL(url_str);dataInputStream=new

20、 DataInputStream(url.openStream();tryi=1;line_str=dataInputStream.readLine();while(line_str!=null),paint(getGraphics();line_str=dataInputStream.readLine();catch(IOException e)dataInputStream.close();catch(MalformedURLException el)catch(IOException e2),2.3 URLConnection()类 URL类仅提供读取地址为URL的Web服务器内容的方法

21、。如果不仅要读取其内容,而且要向URL对象发送服务请求及参数,那么必须要使用URLConnection()类。利用URL类提供的openConnection()方法,可以建立一个URLConnection类对象。然后,可以使用这个URLConnection类对象绑定的数据输入流读URL的内容,使用这个URLConnection类对象绑定的数据输出流发送服务请求及参数。URLConnection类是一个以http为中心的类,同时支持get和post两种方法,默认情况下为post 方法。URL和URLConnection的区别在于前者代表一个资源的位置,后者代表一种连接。,1.读取URL对象内容例

22、5 利用URLConnection类获取网络上的HTML文件。import.*;import java.io.*;public class ReadURLConnection static public void main(String args)try URL cumtURL=new URL(http:/,URLConnection cumtConnection=cumtURL.openConnection();DataInputStream din=New DataInputStream(cumtConnection.getInputStream();String inputLine;wh

23、ile(inputLine=din.readLine()!=null)System.out.println(inputLine);din.close();catch(MalformedURLException me)catch(IOException ioe),2.与URL对象交互 利用URLConnection类对象向URL对象发送服务请求及参数,这里以Java程序与服务器端的CGI(Commen Gateway Interface,公共网关)交互为例,具体实现步骤如下。(1)创建URL(包括CGI文件名)对象。(2)打开一个到该URL的连接,建立相应的URLConnection对象。(3)

24、从URLConnection对象获取其绑定的输出流。这个输出流就是连接到服务器上CGI的标准输入流(stdin)。(4)向这个输出流中写数据,并关闭这个输出流.,(5)从URLConnection对象获取其绑定的输入流。这个输入流就是连接到服务器上CGI的标准输出流(stdout);从这个输入流中读服务结果。关闭这个输入流。例6 通过URLConnection对象运行上一个叫backwards的CGI,backwards将其反转后写到标准输出。这个CGI需要下面这种格式的输入string=string_to_reverse,这里string_to_reverse参数就是要反转的字符串。CGI

25、backwards 可执行文件从标准输入读取字符串,将其转换成大写字符串写到标准输出。这种标准输入格式为:“string=string_to_reverse”,这里string_to_reverse 参数就是要转换成大写的字符串,如图2所示。,图2 例1-6 的Java程序与Web/CGI交互,例6 利用URLConnection类向CGI发送请求消息。,import.*;import java.io.*;public class RequestURLConnection static public void main(String args)try String string_to_reve

26、rse=URLEncoder.encode(args0);URL exampleURL=bin/backwards);URLConnection exampleConnection=exampleURL.openConnection();,PrintStream dout=new PrintStream(new DataOutputStream(exampleConnection.getOutputStream();dout.println(string=+string_to_reverse);dout.close();DataInputStream din=new DataInputStre

27、am(exampleConnection.getInputStream();String inputLine;while(inputLine=din.readLine()!=null)System.out.println(inputLine);din.close();,catch(MalformedURLException me)System.err.println(MalformedURLException+me);catch(IOException ioe)System.err.println(IOException+ioe);运行java RequestURLConnection abcd 命令,结果:abcdreversed is:dcba,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号