面向对象程序设计 网络编程.ppt

上传人:qwe****56 文档编号:70023568 上传时间:2023-01-14 格式:PPT 页数:23 大小:174KB
返回 下载 相关 举报
面向对象程序设计 网络编程.ppt_第1页
第1页 / 共23页
面向对象程序设计 网络编程.ppt_第2页
第2页 / 共23页
点击查看更多>>
资源描述

《面向对象程序设计 网络编程.ppt》由会员分享,可在线阅读,更多相关《面向对象程序设计 网络编程.ppt(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、上节回顾Java I/O基本概念流的基础知识字节流与字符流利用流实现基本的I/O操作网络编程学习目的与要求:学习目的与要求:深刻理解网络编程模型。深刻理解网络编程模型。深刻理解相关网络概念。深刻理解相关网络概念。熟练使用熟练使用Socket进行编程进行编程 网络编程基础网络编程基础lC/S模式和模式和B/S模式模式 客户/服务器模型lTCP/IP协议协议所谓通信协议,就是客户端计算机与服务器端计算机在网络上通信的所谓通信协议,就是客户端计算机与服务器端计算机在网络上通信的方法。计算机网络形式多样,内容繁杂。网络上的计算机要互相通信,方法。计算机网络形式多样,内容繁杂。网络上的计算机要互相通信,

2、必须遵循一定的协议必须遵循一定的协议 目前使用最广泛的网络协议是目前使用最广泛的网络协议是Internet上所使用的上所使用的TCP/IP协议。协议。TCP协议即传输控制协议,是一种面向连接的保证可靠传输的协议;协议即传输控制协议,是一种面向连接的保证可靠传输的协议;IP协议即网际协议,是一种面向无连接的协议。通过协议即网际协议,是一种面向无连接的协议。通过TCP协议传输,协议传输,得到的是一个顺序的无差错的数据流得到的是一个顺序的无差错的数据流 UDP是是User Datagram Protocol的简称,是一种无连接的协议,每的简称,是一种无连接的协议,每个数据报都是一个独立的信息,包括完

3、整的源地址或目的地址,它在个数据报都是一个独立的信息,包括完整的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的的地的时间以及内容的正确性都是不能被保证的 lURL和和IP地址地址URLURL即统一资源定位器,是即统一资源定位器,是Internet的关键部分,它表示的关键部分,它表示Internet上某一资源的地址上某一资源的地址它提供了人和机器的导航,其功能是指向计算机里的资源,即定它提供了人和机器的导航,其功能是指向计算机里的资源,即定位。位。URL可以分

4、成三个部分:通信协议、计算机地址和文件可以分成三个部分:通信协议、计算机地址和文件URL常见的通信协议有三种:常见的通信协议有三种:http,ftp和和file URL是最为直观的一种网络定位方法。是最为直观的一种网络定位方法。使用使用URL符合人们的语言习惯,容易记忆,所以应用十分广泛。符合人们的语言习惯,容易记忆,所以应用十分广泛。而且在目前使用最为广泛的而且在目前使用最为广泛的TCP/IP中对于中对于URL中主机名的解析也中主机名的解析也是协议的一个标准,即所谓的域名解析服务是协议的一个标准,即所谓的域名解析服务使用使用URL进行网络编程,不需要对协议本身有太多的了解,功能进行网络编程,

5、不需要对协议本身有太多的了解,功能也比较弱,相对而言是比较简单的也比较弱,相对而言是比较简单的 IP地址地址IP地址地址Internet上的计算机都有一个地址,这个地址就是一个数,称为上的计算机都有一个地址,这个地址就是一个数,称为IP地址,它惟一地标识了网络上的每台计算机地址,它惟一地标识了网络上的每台计算机目前目前Internet中中IP地址使用的都是地址使用的都是IPv4协议,但随着时间的推移协议,但随着时间的推移IPv6协议将协议将会取代会取代IPv4协议成为协议成为IP地址的主要方案地址的主要方案 在在Internet上都是通过上都是通过IP地址来访问主机,但地址来访问主机,但IP地

6、址不容易记忆,我们通常地址不容易记忆,我们通常利用域名来访问利用域名来访问Internet上的主机上的主机 端口号端口号网络通信时同一机器上的不同进程的标识。如网络通信时同一机器上的不同进程的标识。如:80、21、23和和25等,等,其中其中11024为系统保留的端口号。为系统保留的端口号。(1)使用)使用URL进行网络编程进行网络编程(2)使用)使用Socket通信通信(3)使用)使用UDP通信通信 InetAddress类类 方法名方法功能StringgetHostAddress()获获取取InetAddress所含的所含的IP地址地址StringgetHostName()获获取取Inet

7、Address所含的域名所含的域名staticInetAddressgetLocalHost()获获取本地机的地址取本地机的地址StringgetByName()通通过过域名域名获获取取IP地址或通地址或通过过IP地址地址获获取域名取域名getAddress()返回返回IP地址的字地址的字节节形式形式getAllByName()返回指定主机名的返回指定主机名的IP地址地址getByAddress()返回指定字返回指定字节节数数组组的的IP地址形式地址形式hastCode()返回返回InetAddress对对象的哈希象的哈希码码toString()返回地址返回地址转换转换成的字符串成的字符串表1

8、2.1 InetAddress类常用方法InetAddress类应用类应用/获得计算机名称和获得计算机名称和IP地址演示程序地址演示程序import .*;public class INetDemo public static void main(String args)new INetDemo().say();public void say()try InetAddress i=InetAddress.getLocalHost();System.out.println(i);System.out.println(主机名称为主机名称为:+i.getHostName();System.out.p

9、rintln(IP地址为地址为:+i.getHostAddress();catch(Exception e)e.printStackTrace();使用使用URL方式进行网络连接方式进行网络连接在在JAVA中,中,.URL类和类和.URLConection类使编程者方便地利用类使编程者方便地利用URL在在Internet上进行网络通信。上进行网络通信。URL类和类和URLConnection类提供给我们一种简便的方法编写类提供给我们一种简便的方法编写网络程序,实现一些较高级的协议访问网络程序,实现一些较高级的协议访问Internet URL类封装了使用统一资源定位器访问类封装了使用统一资源定位

10、器访问WWW上的上的资源的方法。这个类可以生成一个寻址或指向某个资源的方法。这个类可以生成一个寻址或指向某个资源的对象。资源的对象。URL类对象指向类对象指向WWW资源资源(Web页、页、文本文件、图形文件、声频片段等文本文件、图形文件、声频片段等)URL的基本格式:的基本格式:protocol:/hostname:port/resourcename#anchor,URL中各组成项的主要含义如表中各组成项的主要含义如表12.2所示所示 符号含义protocol协议协议,包括,包括http、ftp、gopher、news、telnet等等hostname主机名,指定主机名,指定DNS服服务务器能

11、器能访问访问的的WWW上的上的计计算机名称,算机名称,如如port端口号,可端口号,可选选,表示所,表示所连连的端口,只在要覆盖的端口,只在要覆盖协议协议的缺省端的缺省端口口时时才有用,如果忽略端口号,将才有用,如果忽略端口号,将连连接到接到协议协议缺省的端口,缺省的端口,例如例如http协议协议的缺省端口的缺省端口为为80resourcename资资源名,是主机上能源名,是主机上能访问访问的目的目录录或文件或文件anchor标记标记,可,可选选,它指定在,它指定在资资源文件中的有特定源文件中的有特定标记标记的位置的位置表12.2 URL含义 URL构造方法和常用方法构造方法和常用方法表12.

12、3 URL类构造方法和常用方法方法名方法功能URL(Stringurl)建立指向建立指向url资资源的源的URL对对象象URL(URLbaseURL,StringrelativeURL)通通过过URL基地址和相基地址和相对对于于该该基地址的基地址的资资源名建立源名建立URL对对象象URL(Stringprotocol,Stringhost,Stringfile)通通过给过给定的定的协议协议、主机和文件名建立、主机和文件名建立URL对对象象URL(Stringprotocol,Stringhost,intport,Stringfile)通通过给过给定定协议协议、主机、端口号和文件名建立、主机、端

13、口号和文件名建立URL对对象象getPort()获获得端口号得端口号getProtocol()获获得得协议协议getHost()获获得主机名得主机名getFile()获获得文件名得文件名getRef()获获得得连连接接getDefaultPort()获获得默得默认认的端口号的端口号getUserInfo获获得用得用户户信息信息getContent()不必不必显显式指定式指定寻寻找的找的资资源源类类型,就可以取回型,就可以取回资资源并返回相源并返回相应应的形式。的形式。(例如例如GIF或或JPEG图图形形资资源会返回一个源会返回一个Image对对象象)openStream()打开一个打开一个输输

14、入流,返回入流,返回类类型是型是InputStream,这这个个输输入流的起点是入流的起点是URL实实体体对对象的内象的内容所代表的容所代表的资资源位置源位置处处,终终点点则则是使用了是使用了该该URL实实体体对对象及方法象及方法openStream()的程序。的程序。在在输输入流建好了之后,我入流建好了之后,我们们就可以从就可以从输输入流中入流中读读取数据了,而取数据了,而这这些信息数据的些信息数据的实际实际来来源,源,则则是最是最为输为输入流起点的网上入流起点的网上资资源文件源文件URL应用实例应用实例/URL应用演示程序应用演示程序import .*;import java.io.*;p

15、ublic class UrlDemopublic static void main(String args)throws ExceptiontryURL url=new URL(http:/);InputStreamReader isr=new InputStreamReader(url.openStream();BufferedReader br=new BufferedReader(isr);String strInfo;while(strInfo=br.readLine()!=null)System.out.println(strInfo);br.close();isr.close()

16、;catch(Exception e)System.out.println(e);基于基于Socket的通讯的通讯lSocket概述概述套接字用于实现网络上客户程序和服务程序之间的连接,套接字用于实现网络上客户程序和服务程序之间的连接,即网络上两个以双工方式通信的进程之间的连接端点称为即网络上两个以双工方式通信的进程之间的连接端点称为套接字。套接字在较低层次上进行通信。套接字。套接字在较低层次上进行通信。套接字是套接字是TCP/IP中的基本概念,它的含义类似于日常使中的基本概念,它的含义类似于日常使用的插座,主要用来实现将用的插座,主要用来实现将TCP/IP包发送到指定的包发送到指定的IP地地

17、址址 应用程序一般仅在同一类的套接字之间通讯。不过只要底应用程序一般仅在同一类的套接字之间通讯。不过只要底层的通讯协议允许,不同类型的套接字之间也可以通讯。层的通讯协议允许,不同类型的套接字之间也可以通讯。有两种套接字类型:流套接字和数据报套接字。其中流套有两种套接字类型:流套接字和数据报套接字。其中流套接字提供双向的、有序的、无重复并且无记录边界的数据接字提供双向的、有序的、无重复并且无记录边界的数据流服务,流服务,TCP是一种流套接字协议是一种流套接字协议 lSocket类和类和ServerSocket类类n在在套套接接字字通通信信中中客客户户端端的的程程序序使使用用Socket类类建建立

18、立与与服服务务器套接字连接,器套接字连接,Socket类的构造方法如类的构造方法如表表12.4所示所示 n在在套套接接字字通通信信中中客客户户端端的的程程序序使使用用Socket类类建建立立与与服服务务器器套套接接字字连连接接,即即客客户户向向服服务务器器发发出出连连接接请请求求。因因此此服服务务器器必必须须建建立立一一个个等等待待接接收收客客户户套套接接字字服服务务器器套套接接字字,以以响响应应客客户户端端的的请请求求。服服务务器器端端程程序序使使用用ServerSocket类类建建立立接接收收客客户户套套接接字字的的服服务务器器套套接接字字。ServerSocket类类的的构造方法和常用方

19、法如构造方法和常用方法如表表12.5所示所示 n客客户户端端和和服服务务器器端端通通过过套套接接字字进进行行通通信信时时,要要进进行行读读写写端端口和取地址操作。读写端口和取地址的方法口和取地址操作。读写端口和取地址的方法表表12.6所示所示 方法名方法功能Socket()建立未建立未连连接的接的socketSocket(SocketImplimpl)通通过过SocketImpl类对类对象建立未象建立未连连接的接的SocketSocket(Stringhost,intport)建立建立Socket并并连连接到指定的主机和端口号接到指定的主机和端口号Socket(InetAddressaddre

20、ss,intport)建立建立Socket并并连连接到指定的接到指定的IP和端口号和端口号Socket(Stringhost,intport,InetAddresslocalAddr,intlocalPort)建立一个建立一个约约束于束于给给定定IP地址和端口的流式地址和端口的流式Socket并并连连接到指定的主接到指定的主机和端口机和端口Socket(InetAddressaddress,intport,InetAddresslocalAddr,intlocalPort)建立一个建立一个约约束于束于给给定定IP地址和端口的流式地址和端口的流式Socket并并连连接到指定的主接到指定的主机和端

21、口机和端口Socket(Stringhost,intport,booleanstream)建立一个建立一个Socket并并连连接到指定的接到指定的IP地址和端口号,其通信方式由地址和端口号,其通信方式由stream给给出出Socket(InetAddressaddress,intport,booleanstream)建立一个建立一个Socket并将它并将它连连接到指定的接到指定的IP地址和端口号,其通信方式地址和端口号,其通信方式有有stream给给出出表12.4 Socket类构造方法方法名方法功能ServerSocket(intport)在本地机上的指定端口(在本地机上的指定端口(int)

22、处创处创建服建服务务器套接字,客器套接字,客户户使用些使用些端口与服端口与服务务器通信。如果端口指定器通信。如果端口指定为为0,那么在本地机上的任何,那么在本地机上的任何端口端口处创处创建服建服务务器套接字。器套接字。ServerSocket(intport,intbacklog)在本地机上的指定端口(在本地机上的指定端口(int)处创处创建服建服务务器套接字,第二个参数器套接字,第二个参数指出在指定端口指出在指定端口处处服服务务器套接字支持的客器套接字支持的客户连户连接的最大数接的最大数ServerSocket(intport,intbacklog,InetAddressbindAddr)在

23、指定端口(在指定端口(int)处创处创建服建服务务器套接字。第三个参数用来器套接字。第三个参数用来创创建多建多个宿主机上服个宿主机上服务务器套接字。服器套接字。服务务器套接字只接收指定器套接字只接收指定IP地址上的地址上的客客户请户请求。求。Socketaccept()在服在服务务器套接字器套接字监监听客听客户连户连接并接收它。此后,客接并接收它。此后,客户户建立与服建立与服务务器的器的连连接,此方法返回客接,此方法返回客户户的套接字。的套接字。voidclose()关关闭闭服服务务器套接字。器套接字。StringtoString()返回作返回作为为串的服串的服务务器套接字的器套接字的IP地址

24、和端口号。地址和端口号。表12.5 ServerSocket类构造方法表12.6 读写端口和取地址的方法方法名方法功能InetAddressgetInetAddress()返回返回该该套接口所套接口所连连接的地址接的地址intgetPort()返回返回该该套接口所套接口所连连接的接的远远程端口程端口synchronizedvoidclose()关关闭闭套接口套接口InputStreamgetInputStream()获获得从套接口得从套接口读读入数据的入数据的输输入流入流OutputStreamgetOutputStream()获获得向套接口得向套接口进进行写操作的行写操作的输输出流出流l基于

25、基于Socket的的C/S程序程序 客户端客户端Socket的工作过程包含以下四个基本的步骤:的工作过程包含以下四个基本的步骤:创建创建Socket。根据指定的。根据指定的IP地址或端口号构造地址或端口号构造Socket类类对象。如服务器端响应,则建立客户端到服务器的通信线对象。如服务器端响应,则建立客户端到服务器的通信线路。路。打开连接到打开连接到Socket的输入的输入/出流。使用出流。使用getInputStream()方法获得输入流,使用()方法获得输入流,使用getOutputStream()方法()方法获得输出流。获得输出流。按照一定的协议对按照一定的协议对Socket进行读进行读

26、/写操作。通过输入流读写操作。通过输入流读取服务器放入线路的信息(但不能读取自己放入线路的信取服务器放入线路的信息(但不能读取自己放入线路的信息),通过输出流将信息写入线程。息),通过输出流将信息写入线程。关闭关闭Socket。断开客户端到服务器的连接,释放线路。断开客户端到服务器的连接,释放线路 对于服务器和客户机而言,将上述第一步改为构对于服务器和客户机而言,将上述第一步改为构造造ServerSocket类对象,监听客户端的请求并类对象,监听客户端的请求并进行响应。基于进行响应。基于Socket的的C/S通信如图通信如图12.4所示所示 图12.4 基于Socket的C/S通信lServe

27、r和一个客户的对话和一个客户的对话基于基于Socket的单客户端程序的单客户端程序/客户端程序客户端程序import .*;import java.io.*;public class Clientpublic static void main(String args)throws IOExceptionSocket socket1=new Socket(args0,Integer.parseInt(args1);trySystem.out.println(Connection to server accepted:+socket1);PrintWriter out=new PrintWrite

28、r(new BufferedWriter(new OutputStreamWriter(socket1.getOutputStream(),true);/向服务器输出数据向服务器输出数据for(int i=0;i10;i+)out.println(data from client:+i);BufferedReader in=new BufferedReader(new InputStreamReader(socket1.getInputStream();/读入服务器的数据并把它输出到屏幕上读入服务器的数据并把它输出到屏幕上for(int i=0;i10;i+)System.out.printl

29、n(in.readLine();finallySystem.out.println(closeing socket);socket1.close();基于基于Socket的服务器端程序的服务器端程序import java.io.*;import .*;public class Serverpublic static final int PORT=8090;public static void main(String args)throws IOExceptionServerSocket s=new ServerSocket(PORT);System.out.println(ServerSock

30、et:+s);trySocket socket1=s.accept();trySystem.out.println(Connection to client accepted:+socket1);BufferedReader in=new BufferedReader(new InputStreamReader(socket1.getInputStream();PrintWriter out=new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket1.getOutputStream(),true);for(int i=0;

31、i10;i+)/读入客户机一行数据到字符串读入客户机一行数据到字符串String str=in.readLine();/输出收到的字符串输出收到的字符串System.out.println(Server receives+str);/在收到的字符串前加上几个单词后发给客户机在收到的字符串前加上几个单词后发给客户机out.println(Server returns back+str);finallySystem.out.println(closing socket);socket1.close();finallys.close();本章小结本章小结网络编程基础。网络编程基础。包括包括C/S模式

32、和模式和B/S模式、模式、TCP/IP协议以及协议以及URL和和IP地址。地址。使用使用URL方式进行网络连接。方式进行网络连接。URL和和URLConnection类提供给我们一种简便的方法编写网络程序,类提供给我们一种简便的方法编写网络程序,实现一些较高级的协议访问实现一些较高级的协议访问Internet。基于连接的流式套接字通信。基于连接的流式套接字通信。套接字用于实现网络上客户程序和服务程序之间的连接,即网络上套接字用于实现网络上客户程序和服务程序之间的连接,即网络上两个以双工方式通信的进程之间的连接端点称为套接字。在套接两个以双工方式通信的进程之间的连接端点称为套接字。在套接字通信中客户端的程序使用字通信中客户端的程序使用Socket类建立与服务器套接字连接,类建立与服务器套接字连接,服务器端程序使用服务器端程序使用ServerSocket类建立接收客户套接字的服务类建立接收客户套接字的服务器套接字器套接字

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁