Java网络程序设计信息工程系孙琳2013-08第一章Java网络程序设计基础信息工程系孙琳2013-081Java网络程序设计基础•1.1Java语言•1.2网络基础知识•1.3网络程序设计基础1.1Java语言•1.1.1Java语言的优点▫简单性▫面向对象▫多线程▫分布性▫体系结构中立▫安全性1.1.2Java中常用的包•java.lang——包含一些java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能;•java.util——包含一些实用的工具类,如定义系统特性,使用与日期日历相关的函数•java.io——包含能提供多种输入/输出功能的类;•java.net——包含执行与网络相关的操作的类;•java.awt——包含了构成抽象窗口工具集(abstractwindowtoolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。•java.swing——含swing图形用户界面编程的相关类/接口•java.applet——包含applet运行所需的一些类;•java.sql——数据库访问1.1.3Java中的数据流Java数据流的应用表现•键盘读取数据•从文件获取数据和向文件存入数据•在显示器上显示数据•从网络上进行数据传输•数据流是指一组有顺序的、有起点和终点的字节集合文件程序网络端点文件程序终端网络端点文件、字符串存储区终点起点流是传递数据的载体,流是数据经历的路径数据源目的地读数据写数据数据流1.1.3Java中的数据流•输入数据流将数据从数据源传递给程序,可以从键盘或者文件中获得数据。输入流只能读不能写。•输出数据流经数据从程序送到数据接收者,如可以向显示器屏幕或文件传输数据。输出流只能写不能读。•流的处理过程:打开数据流,读取或写入,关闭数据流1.1.3Java中的数据流•Java使用流(stream)来执行输入输出(I/O)的功能,流是一种数据的源头和目的之间的通信途径。•所有输入数据流都是抽象类InputStream或Reader的子类•所有输出数据流都是抽象类OutputStream或Writer的子类•当使用流时需要使用java.io包,因此在涉及数据流操作的程序中都要先导入java.io包:•importjava.io.*;•写信息:OutputStream的writer()方法•读信息:InputStream的read()方法•创建InputStream:使用getInputStream()创建•创建OutputStream:使用getOutputStream()创建•读写BufferedReader和BufferedWriter缓冲区数据时,就减少了对数据源的访问量,具有缓冲的流比没有缓冲的流效率更高•FilterInputStream和FilterOutputStream由一个非缓存的InputStream和OutputStream实例构造成。通过缓存和刷新提供性能。•DataInputStream和DataOutputStream为读写原始数据类型提供高级服务。•FileReader、FileWriter、FileInputStream和FileOutputStream负责从文件中读写到文件中。1.1.4Java程序的开发过程•Java文件编译成.class文件,执行.class文件。•运行命令:•javahello1.1.5Java开发工具在用户变量中加入“classpath”的变量名,变量值为“.;D:\Java\jdk1.6.0_21\bin;”。在系统变量中找到“path”变量,在变量值前加上“D:\Java\jdk1.6.0_21\bin;”。然后确定,这样环境变量就配置好了,并且在每次打开命令提示符都会生效。步骤/方法•编写程序:在程序编辑器中编写源代码如下:publicclasshello{publicstaticvoidmain(String[]args)//本行代码String的S一定要大写{System.out.println(“HelloWorld!”);//本行System的S也一定要大写}}•编译程序:环境配置好后就是编译,输入命令“javachello.java”,回车,这时回到Java源文件的存放目录会发现多了一个“hello.class”的类文件,接下来就要执行类文件了。•执行程序:在命令提示符中输入“javahello”,回车。HelloWorld!就会呈现在你眼前,一个简单的Java应用程序就运行成功了。集成开发环境•MyEclipse•Eclipse1.2网络基础知识•1.2.1ISO/OSI参考模型•1.2.2TCP/IP参考模型•1.2.3TCP/IP协议•1.2.4IP地址•1.2.5域名•1.2.6端口1.2.1ISO/OSI参考模型•1977年,国际标准化组织提出了开放系统互连参考模型(OSI,OpenSystemInterconnection)的概念,1984年10月正式发布了整套OSI国际标准。OSI参考模型OSI参考模型将网络的功能划分为7个层次:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。2020/6/2120主机A主机B表示层会话层应用层传输层数据链路层物理层网络层表示层会话层应用层传输层数据链路层物理层网络层应用层协议表示层协议会话层协议传输层协议数据链路层物理层网络层数据链路层物理层网络层信息交换单位Message(信息报文)MessageMessageMessagePacket(分组)Frame(帧)Bits(二进制流)传输介质路由器路由器传输介质图OSI参考模型物理层位于OSI参考模型的最底层,提供一个物理连接,所传数据的单位是比特。其功能是对上层屏蔽传输媒体的区别,提供比特流传输服务。也就是说,有了物理层后,数据链路层及以上各层都不需要考虑使用的是什么传输媒体,无论是用双绞线、光纤,还是用微波,都被看成是一个比特流管道。2020/6/2121数据链路层负责在各个相邻节点间的线路上无差错地传送以帧(Frame)为单位的数据。每一帧包括一定数量的数据和一些必要的控制信息。其功能是对物理层传输的比特流进行校验,并采用检错重发等技术,使本来可能出错的数据链路变成不出错的数据链路,从而对上层提供无差错的数据传输。换句话说,就是网络层及以上各层不再需要考虑传输中出错的问题,就可以认定下面是一条不出错的数据传输信道,把数据交给数据链路层,它就能完整无误地把数据传给相邻节点的数据链路层。2020/6/2122网络层计算机网络中进行通信的两台计算机之间可能要经过多个节点和链路,也可能要经过多个通信子网,网络层数据的传送单位是分组或包(Packet),它的任务就是要选择合适的路由,使发送端的传输层传下来的分组能够正确无误地按照目的地址发送到接收端,使传输层及以上各层设计时不再需要考虑传输路由。2020/6/2123传输层在发送端和接收端之间建立一条不会出错的路由,对上层提供可靠的报文传输服务。与数据链路层提供的相邻节点间比特流的无差错传输不同,传输层保证的是发送端和接收端之间的无差错传输,主要控制的是包的丢失、错序、重复等问题。2020/6/2124会话层会话层虽然不参与具体的数据传输,但它却对数据传输进行管理。会话层建立在两个互相通信的应用进程之间,组织并协调其交互。例如,在半双工通信中,确定在某段时间谁有权发送,谁有权接收;或当发生意外时(如已建立的连接突然断了),确定在重新恢复会话时应从何处开始,而不必重传全部数据。2020/6/21252020/6/2126表示层表示层主要为上层用户解决用户信息的语法表示问题,其主要功能是完成数据转换、数据压缩和数据加密。表示层将欲交换的资料从适合于某一用户的抽象语法变换为适合于OSI系统内部使用的传送语法。有了这样的表示层,用户就可以把精力集中在他们所要交谈的问题本身,而不必更多地考虑对方的某些特性。返回2020/6/2127应用层应用层是OSI参考模型中的最高层。应用层确定进程之间的通信性质以满足用户的需要,负责用户信息的语义表示,并在两个通信者之间进行语义匹配。这就是说,应用层不仅要提供应用进程所需要的信息交换等操作,而且还要作为互相作用的进程的用户代理,来完成一些为进行语义上有意义的信息交换所必需的功能。返回2020/6/2128OSI模型各层主要功能的归纳总结应用层:与用户应用进程的接口,即相当于“做什么?”表示层:数据格式的转换,即相当于“对方看起来像什么?”会话层:会话的管理与数据传输的同步,即相当于“轮到谁讲话和从何处讲?”传输层:从端到端经网络透明地传送报文,即相当于“对方在何处?”网络层:分组交换和路由选择,即相当于“走哪条路可到达该处?”数据链路层:在链路上无差错的传送帧,即相当于“每一步该怎么走?”物理层:将比特流送到物理媒体上传送,即相当于“对上一层的每一步应该怎样利用物理媒体?”2020/6/2129OSI模型各层主要功能的归纳总结OSI参考模型的网络功能可分为三组,下两层解决网络信道问题,第三、四层解决传输服务问题,上三层处理应用进程的访问,解决应用进程通信问题。2020/6/2130TCP/IP参考模型TCP/IP协议是1974年由VintonCerf和RobertKahn开发的,随着Internet的飞速发展,TCP/IP协议现已成为事实上的国际标准。TCP/IP协议实际上是一组协议,是一个完整的体系结构。图TCP/IP参考模型及各层对应的协议TCP/IP参考模型TCP/IP各层的协议应用层传输层网际层网络接口层2020/6/2131OSI参考模型与TCP/IP参考模型的比较TCP/IP参考模型中没有数据链路层和物理层,只有网络与数据链路层的接口,可以使用各种现有的链路层、物理层协议。TCP/IP模型的网际层(也称互联层)对应于OSI模型的网络层,包括IP(网际协议)、ICMP(网际控制报文协议)、IGMP(网际组报文协议)以及ARP(地址解析协议),这些协议处理信息的路由以及主机地址解析。传输层对应于OSI模型的传输层,包括TCP(传输控制协议)和UDP(用户数据报协议),这些协议负责提供流控制、错误校验和排序服务,完成源到目标间的传输任务。应用层对应于OSI模型的应用层、表示层和会话层,它包括了所有的高层协议,并且不断有新的协议加入。1.2.3TCP/IP协议•TCP/IP协议(TransferControlnProtocol/InternetProtocol)叫做传输控制/网际协议,又叫网络通讯协议,这个协议是Internet国际互联网络的基础。•TCP/IP是网络中使用的基本的通信协议。虽然从名字上看TCP/IP包括两个协议,传输控制协议(TCP)和网际协议(IP),但TCP/IP实际上是一组协议,它包括上百个各种功能的协议,如:远程登录、文件传输和电子邮件等,而TCP协议和IP协议是保证数据完整传输的两个基本的重要协议。通常说TCP/IP是Internet协议族,而不单单是TCP和IP。•TCP/IP是用于计算机通信的一组协议,我们通常称它为TCP/IP协议族。TCP•TCP(TransmissionControlProtocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“对话”才能建立起来。•发送方和接收方的成对的两个Socket之间必须建立连接,以便在TCP协议的基础上进行连接。当一个socket(通常是serversocket)等待建立连接时,另一个socket可以要求进行连接。一旦这两个socket连接起来,就可以进行双向数据传输,双方都可以进行发送或接受操作。UDP•UDP(UserDataProtocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去。•UDP适用于一次只传送少量数据、对