Java程序设计PPT课件版 第七章 数据输入与输出_第1页
Java程序设计PPT课件版 第七章 数据输入与输出_第2页
Java程序设计PPT课件版 第七章 数据输入与输出_第3页
Java程序设计PPT课件版 第七章 数据输入与输出_第4页
Java程序设计PPT课件版 第七章 数据输入与输出_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第七章数据输入与输出授课教师:陈海俊QQ:443174964输入/输出流概念文件读取与管理字节/符流类的功能与用法字节/符流的概念System的功能与用法本章主要内容输入/出流文件程序终端文件程序网络端点数据流起点终点网络端点文件,字符串存储区什么是数据流?数据流是指所有的数据通信通道在java中有关流的操作使用java.io.*出于安全的考虑,小应用不能实现文件I/O流计算机通信协议System类管理标准输入输出流和错误流System.out:把输出送到缺省的显示(通常是显示器)System.in从标准输入获取输入(通常是键盘)System.err把错误信息送到缺省的显示每当main方法被执行时,就自动生成上述三个对象计算机网络分层

OSI(Open

SystemInterconnection)开放系统互连参考模型,将计算机网络分为:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。OSI分层模型和TCP/IP分层模型IP(Internet

Protocol)协议又称互联网协议,是支持网间互联的数据报协议。TCP(Transmission

Control

Protocol)协议,即传输控制协议,规定一种可靠的数据信息传递服务。IP地址IP地址用于标识网络中的一个通信实体,这个通信实体可以是一台主机,也可以是一台打印机,或者是路由器的某一个端口。而在基于IP协议网络中传输的数据包,都必须使用IP地址来进行标识。IP地址是一个32位整数,为了便于记忆,通常把它分成4个8位的二进制数组成,每8位之间用圆点隔开,每个8位整数可以转换成一个0~255的十进制整数。例如:10(百度首页)IP地址被分成了A、B、C、D、E五类,各自范围如下:A类:~55 B类:~55C类:~55 D类:~55IP地址特殊的IP每一个字节都为0的地址(“”)对应于当前主机;每一个字节都为1的IP地址(“255.255.255.255”)是当前子网的广播地址;凡是以“11110”开头的E类IP地址都保留用于将来和实验使用。IP地址中不能以十进制“127”作为开头,该类地址中数字到55用于回路测试,如:可以代表本机IP地址,用“”就可以测试本机中配置的Web服务器。网络ID的第一个8位组也不能全置为“0”,全“0”表示本地网络。端口IP地址可以唯一确定网络上的一个通信实体,但一个通信实体可以有多个通信程序同时提供网络服务,此时还需要使用端口表示数据交给哪个通信程序处理。端口是一个16位的整数,端口号从0到65535。同一台机器上不能有两个程序使用同一个端口,通常将它分为三类:公认端口:从0到1023,它们紧密绑定一些服务;注册端口:从1024到49151,它们松散地绑定一些服务;动态或私有端口:从49152到65535,这些端口是应用程序使用的动态端口,应用程序一般不会主动使用这些端口。例如:简单邮件传输协议:25,Telnet协议:23,FTP协议:21,超文本传输协议:80等。Java的基本网络支持Java为网络支持提供了包,其中InetAddress类代表IP地址,InetAddress下还有2个子类:Inet4Address、Inet6Address。InetAddress类没有提供构造器,而是提供了获取InetAddress实例的静态方法:

getByName(Stringhost):根据主机获取对应的InetAddress对象。

getByAddress(byte[]addr):根据原始IP地址来获取对应的InetAddress对象。InetAddress提供了获取InetAddress实例对应的IP和主机名的方法StringgetCanonicalHostName():获取此IP地址的全限定域名。StringgetHostAddress():返回该InetAddress实例对应的IP地址字符串(以字符串形式)。StringgetHostName():获取此IP地址的主机名。URL和URLConnection

URL(Uniform

ResourceLocator)统一资源定位器是指向互联网“资源”的指针。资源可以是简单的文件或目录,也可以是对更复杂的对象引用,例如对数据库或搜索引擎的查询。通常情况而言,URL可以由协议名、主机、端口和资源组成。即满足如下格式:

protocol://host:port/resourceNameJava中提供了URL类,该类封装了URL中各部分的内容,例如获取该URL对应的主机名、路径、端口等方法。例如:StringgetFile():获取该URL的资源名;StringgetQuery():获取该URL的查询字符串部分;URLConnectionopenConnection():返回一个URLConnection对象,它代表了与URL所引用的远程对象的连接。InputStreamopenStream():打开与此URL的连接,并返回一个用于读取该URL资源的InputStream。下载网络图片示例基于TCP协议的网络编程TCP/IP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket,从而在通信的两端之间形成网络虚拟链路。从而使两端的程序可以通过虚拟链路进行通信。Java对基于TCP协议的网络通信提供了良好的封装,使用Socket对象表示两端的通信端口,并通过Socket产生IO流来进行网络通信。

IP协议是一个无连接的协议,负责将数据从源转发到目的地,主要功能有:IP寻址、路由选择、分组及重组。IP协议提供主机间的逻辑通信,提供“尽力而为的服务”,它将尽力而为地在主机间传送数据段,不能保证交付与否、交付的时间、数据的完整性。因此,IP服务被称为“不可靠”的服务。TCP(传输控制协议)被称作一种端对端协议,通过建立TCP连接,以及流量控制、顺序编码、应答和计时器等措施,TCP保证将数据按序、正确地从源主机中的一个进程传递到目的主机的指定进程。TCP将IP所提供的主机间不可靠传递服务转换成进程间的可靠地数据传输服务。基于TCP协议的网络编程ServerSocket类的方法

ServerSocket(intport):用指定的端口来创建ServerSocket对象;

ServerSocket(intport,intbacklog):增加一个用来改变连接队列长度的参数backlog。

ServerSocket(intport,intbacklog,InetAddresslocalAddr):在机器存在多个IP地址的情况下,允许通过localAddr参数指定将ServerSocket绑定到指定的IP地址。

Socketaccept():如果接收到一个客户端Socket的连接请求,该方法将返回一个与客户端Socket对应的Socket;否则该方法将一直处于等待状态,线程也被阻塞。

在两个通信实体没有建立虚拟链路之前,必须有一个通信实体先做出“主动姿态”,主动接受来自其他通信实体的连接请求。Java中能接收其他通信实体连接请求的类是ServerSocket,该对象用于监听来自客户端的Socket连接,如果没有连接,它将一直处于等待状态。基于TCP协议的网络编程TCPSocket通信流程:1、服务端创建一个ServerSocket对象,指定端口号,ServerSocket对象等待客户端的连接请求;2、客户端创建一个Socket对象,指定主机地址和端口号,向服务端发出请求连接;3、服务端接收到客户端的连接请求,建立一条TCP连接,再创建一个Socket对象与客户端的Socket对象进行通信;4、服务端和客户端分别创建字节输入流和字节输出流,通过字节输入流获取对方发来的数据,通过字节输出流向对方发送数据;5、当一方决定结束通信时,向对方发送结束信息;另一方接收到结束信息后,双方分别关闭各自的TCP的连接;6、ServerSocket对象停止等待客户端的连接请求。Socket通信流程多人聊天小程序多人聊天小程序运行效果“萍水相逢”的界面“难得糊涂”的界面“梦醒时分”的界面聊天界面设计关键代码---界面布局多人聊天小程序构造方法和成员声明设置窗体属性,添加控件并设置控件位置多人聊天小程序聊天界面设计关键代码----事件处理离线按钮的事件处理发送按钮的事件处理聊天客户端关键代码多人聊天小程序聊天服务器端关键代码启动客户端线程监听客户端请求,并创建Socket与之通信客户端线程关键代码多人聊天小程序一个线程即代表一个用户,需要创建一个聊天窗体,同时能够接收其他用户发送的信息。服务器端线程关键代码多人聊天小程序获取客户端发送的信息,然后将其转发给所有的用户。基于UDP协议的网络编程

UDP(User

DatagramProtocol,用户数据报协议)是一个不可靠的网络协议,以数据报为单位进行数据传输,每个数据报是一个独立信息,其中包括目标主机的IP地址和端口。一个数据报从源主机出发,经过若干路由器,到达目标主机的指定端口,它所经过的路径有多种可能,每次可能不同。从源主机发送到目的主机的多个包可能选择不同的路由,也可能按不同的顺序到达。如果目标地址错误,或者某个路由器不正常,将导致数据报丢失,不能到达目的地,因此UDP不能保证数据传输的可靠性。UDP协议是面向非连接的协议,没有建立连接的过程,因此通信效率非常高,在一些实时性很强的应用场景中具有较强的实用性和可行性,如网络游戏、视频会议等,UDP协议的快速具有独特的魅力。Java提供了DatagramSocket对象作为基于UDP协议的Socket,使用DatagramPacket代表DatagramSocket发送、接收的数据报。基于UDP协议的网络编程

DatagramSocket仅仅接收和发送数据报,自身不维护状态,也不能产生IO流,DatagramPacket表示接收和发送的数据。DatagramSocket中的方法DatagramSocket():创建一个DatagramSocket实例,并将该对象绑定到本机默认IP地址、本机所有可用端口中随机选择的某个端口。DatagramSocket(intport):创建一个DatagramSocket实例,并将该对象绑定到本机默认IP地址、指定端口。DatagramSocket(intport,InetAddressaddress):创建一个DatagramSocket实例,并将该对象绑定到指定IP地址、指定端口。receive(DatagramPacketp):从该DatagramSocket中接收数据报;send(DatagramPacketp):以该DatagramSocket发送数据报。基于UDP协议的网络编程DatagramPacket中的方法DatagramPacket(byte[]buf,intlength):以一个空数组来创建DatagramPacket对象,该对象的作用是接收DatagramSocket中的数据。DatagramPacket(byte[]buf,

intoffset,intlength):以一个空数组来创建DatagramPacket对象,并指定接收到的数据放入buf数组中从offset开始,最多放length个字节。DatagramPacket(byte[]buf,

intlength,InetA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论