第4章-Java网络应用ppt课件(全).ppt

上传人:知****量 文档编号:78675064 上传时间:2023-03-18 格式:PPT 页数:24 大小:384.54KB
返回 下载 相关 举报
第4章-Java网络应用ppt课件(全).ppt_第1页
第1页 / 共24页
第4章-Java网络应用ppt课件(全).ppt_第2页
第2页 / 共24页
点击查看更多>>
资源描述

《第4章-Java网络应用ppt课件(全).ppt》由会员分享,可在线阅读,更多相关《第4章-Java网络应用ppt课件(全).ppt(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第4章Java网络应用14.1 Java的Socket编程概述4.2 实例1 网络编程示例4.3 实例2 客户端之间通信的聊天室4.4 实例3 Java编程实现搜索网络服务器4.5 实例4 用Java编写Web服务器4.6 实例5 用Java实现P2P网络通信4.7 实例6 基于URL的Web服务器数据访问24.1 Java的的Socket编程概述编程概述4.1.1 充分理解充分理解Socket1.什么是Socket所谓Socket通常也称为“套接字”,用于描述IP地址和端口,是一个通信链的句柄。建立网络连接时要使用“套接字”,应用程序通过“套接字”向网络发出请求或者应答网络请求。Socket

2、和ServerSocket类位于包中。ServerSocket用于服务器端,Socket用于客户端,它们统称为Socket。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。32.重要的重要的Socket API继承于,有八个构造器,其方法并不多,下面介绍使用最频繁的继承于,有八个构造器,其方法并不多,下面介绍使用最频繁的三个方法:三个方法:Accept()方法用于产生方法用于产生“阻塞阻塞”,直至接收到来自客户端的一个,直至接收到来自客户端的一个连接,并且返回客户端

3、的连接,并且返回客户端的Socket对象实例。对象实例。“阻塞阻塞”是一个术是一个术语,它使程序运行暂时语,它使程序运行暂时“停留停留”在这个地方,直到一个会话产生,在这个地方,直到一个会话产生,然后程序继续;通常然后程序继续;通常“阻塞阻塞”是由循环产生的。是由循环产生的。GetInputStream()方法获得网络连接输入,同时返回一个方法获得网络连接输入,同时返回一个IutputStream对象实例。对象实例。GetOutputStream()方法连接的另一端将得到输入,同时返回一方法连接的另一端将得到输入,同时返回一个个OutputStream对象实例。对象实例。注意:其中注意:其中g

4、etInputStream()和和getOutputStream()方法均会方法均会产生一个产生一个IOException,它必须被捕获,因为它们返回的流对象,它必须被捕获,因为它们返回的流对象通常都会被另一个流对象使用。通常都会被另一个流对象使用。44.1.2 客户端客户端/服务器模式程序设计原理服务器模式程序设计原理服务器使用服务器使用ServerSocket监听指定的端口,端口可以随监听指定的端口,端口可以随意指定(由于意指定(由于1024以下的端口通常属于保留端口,在一些以下的端口通常属于保留端口,在一些操作系统中不可以随意使用,所以一般使用大于操作系统中不可以随意使用,所以一般使用大

5、于1024的端的端口),等待客户连接请求,客户连接后,会话产生;在完口),等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。成会话后,关闭连接。5q定义数据成员q定义数据成员q创建服务器端Socketq创建客户端Socketq等待客户端连接信号q建立数据输入流和数据输出流q建立数据输入流和数据输出流q由数据输入流读取客户端发来的信息q由数据输出流向客户端发出信息q由数据输出流向q服务器端发出连接信息q由数据输入流读取q客户端发来的信息64.2 实例实例1 网络编程示例网络编程示例本例由客户端程序和服务器程序两部分组成。1.客户端程序/*程序文件名称:SClient.java*功能

6、:客户端程序,使用套接字连接服务器*/import java.io.*;import .*;public class SClientpublic static void main(String args)String s=null;Socket mysocket;DataInputStream in=null;DataOutputStream out=null;try/创建一个可以连接到Server的套接字,其端口为4321mysocket=new Socket(“localhost”,4321);7q/创建一个输入流in,把从套接字中读出的字节转换成字符q/这个转换是基于平台默认字符集之上的

7、qin=new DataInputStream(mysocket.getInputStream();q/创建一个输出流out,用来把发送给套接字的字符转换成字节qout=new DataOutputStream(mysocket.getOutputStream();q/通过out向“线路”写入请求连接的信息qout.writeUTF(“我是客户机,向你请求连接。”);q/通过循环,是使用in读取服务器放在“线路”里的信息qwhile(true)q s=in.readUTF();q if(s!=null)break;qq mysocket.close();qqcatch(IOException(

8、“无法连接”);qSystem.out.println(s);qq 82.服务器端程序服务器端程序/*程序文件名称:程序文件名称:SServer.java*功能:远程数据传输服务器端程序功能:远程数据传输服务器端程序*/import java.io.*;import .*;public class SServer public static void main(String args)ServerSocket serverS=null;Socket youS=null;String s=null;DataOutputStream out=null;DataInputStream in=null

9、;/创建创建Server的套接字,设定其端口为的套接字,设定其端口为4321try serverS=new ServerSocket(4321);catch(IOException e1)System.out.println(“ERRO:”+e1);9try /使用使用accept()方法接收客户机传来的连接信号方法接收客户机传来的连接信号 youS=serverS.accept();/建立数据输入流建立数据输入流in及数据输出流及数据输出流out in=new DataInputStream(youS.getInputStream();out=new DataOutputStream(you

10、S.getOutputStream();/通过输入流通过输入流in读取客户放入读取客户放入“线路线路”里的信息里的信息while(true)s=in.readUTF();if(s!=null)break;System.out.println(s);/通过输出流通过输出流out向向“线路线路”写入信息写入信息out.writeUTF(“你好:我是服务器,连接成功。你好:我是服务器,连接成功。”);youS.close();catch(IOException e)System.out.println(“ERRO:”+e);104.3 实例实例2 客户端之间通信的聊天室客户端之间通信的聊天室在网络上

11、实际应用的聊天活动,并不是在客户端在网络上实际应用的聊天活动,并不是在客户端与服务器之间进行聊天,而应该是在客户端之间与服务器之间进行聊天,而应该是在客户端之间进行聊天通信。下面讨论如何实现这种通信方式。进行聊天通信。下面讨论如何实现这种通信方式。11/*程序文件名称:Chat.java*功能:多用户聊天室的客户端程序(主程序),*构造和设置应用程序窗体。*/import;import java.awt.*;import javax.swing.*;import.*;public class Chat boolean packFrame=false;/*构造函数,显示应用程序的窗体.*/pub

12、lic Chat()Frame1 frame=new Frame1();/Validate frames that have preset sizes 12/Pack frames that have useful preferred size info,e.g.from their layout if(packFrame)frame.pack();else frame.validate();/使窗体在屏幕居中显示 Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();Dimension frameSize=frame

13、.getSize();if(frameSize.height screenSize.height)frameSize.height=screenSize.height;if(frameSize.width screenSize.width)frameSize.width=screenSize.width;frame.setLocation(screenSize.width-frameSize.width)/2,(screenSize.height-frameSize.height)/2);13/*主函数,应用程序的入口主函数,应用程序的入口.*/public static void main(

14、String args)SwingUtilities.invokeLater(new Runnable()public void run()try UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName();catch(Exception exception)exception.printStackTrace();new Chat();/run()end );/invokeLater()方法方法 end 144.3.3 多客户端进行通信的聊天室程序功能多客户端进行通信的聊天室程序功能服务器:主函数类服务器:主函数类Ser

15、ver:构造函数构造函数Server()(1)设置端口)设置端口(2)阻塞端口,调用)阻塞端口,调用CreateServerThread对象来接收和传递对象来接收和传递客户端信息。客户端信息。服务器端线程类服务器端线程类 CreateServerThread:构造函数构造函数CreateServerThread()建立输入、输出流的对象建立输入、输出流的对象线程线程run():判断来自客户端的字符串前缀中是否包含有:判断来自客户端的字符串前缀中是否包含有新用户新用户,如果是,如果是新用户新用户,则查找当前聊天室内是否有相同名称的用户;如果有这个名称,则返回,则查找当前聊天室内是否有相同名称的用

16、户;如果有这个名称,则返回该用户该用户名已注册名已注册,如果没有这个名称,则建立一个向量,记录这个新用户的昵称和性别。,如果没有这个名称,则建立一个向量,记录这个新用户的昵称和性别。否则是已经注册正在聊天室内的客户发来的信息,如果信息中包含有否则是已经注册正在聊天室内的客户发来的信息,如果信息中包含有下线了下线了,则,则转发转发“某某客户下线了某某客户下线了”,否则是客户端发来的信息,给予转发出去。登录界面如,否则是客户端发来的信息,给予转发出去。登录界面如图图4-4、聊天界面如图、聊天界面如图4-5所示。所示。1544 实例实例3 Java编程实现搜索网络服务器编程实现搜索网络服务器 网络世

17、界中,能搜索网络上各种服务器的程序常网络世界中,能搜索网络上各种服务器的程序常有重要作用,比较常见的应用是搜索有重要作用,比较常见的应用是搜索WWW代理服代理服务器,寻找务器,寻找FTP服务器等,比较有名的如服务器等,比较有名的如Net Hunter。本文提供的程序本文提供的程序NetDog.java使用编程通过。使用编程通过。q4.4.1 4.4.1 本程序使用方法本程序使用方法q 步骤1:对于Jcreator Pro的用户应先创建一个工程(Project),再本程序的源文件加入工程中,然后在集成环境中将本程序作为应用程序(Application),运行NetDog类(如图4-6所示)。16

18、4.4.2 本程序原理本程序原理 本程序使用了两个类,其中本程序使用了两个类,其中NetDog类是主要的,类是主要的,AboutDialog类是关于帮助的。类是关于帮助的。NetDog实现了实现了Runnable接口,使用单独的线接口,使用单独的线程进行搜索,可以获得对搜索过程的控制,能够程进行搜索,可以获得对搜索过程的控制,能够随时停止线程或退出。随时停止线程或退出。在在NetDog类中使用两个整型数组,分别保存用类中使用两个整型数组,分别保存用户输入的搜索开始户输入的搜索开始IP和结束和结束IP,以此作为循环条,以此作为循环条件。在线程中,循环创建当前件。在线程中,循环创建当前IP地址相应

19、端口的地址相应端口的套接字(套接字(Socket)类,进行网络连接,以检测当)类,进行网络连接,以检测当前前IP地址的指定端口是否活动。如果该端口活动,地址的指定端口是否活动。如果该端口活动,作为正确结果显示并可以保存;否则,继续搜索作为正确结果显示并可以保存;否则,继续搜索下一个。下一个。174.5 实例实例4 用用Java编写编写Web服务器服务器Web服务器是基于HTTP协议的文本服务器。在Internet通过建立Socket连接来发送基于HTTP协议的文本消息,客户机与服务器之间可以通信。应用程序之间都采用流来进行通信,而且发送的文本消息都是人们可以阅读的。在Java中,通过实例化一个

20、SeverSocket对象来监听特定的端口,获得来自客户端的请求信息,并将结果信息返回,便可以实现一个简单的Web服务器。184.5.1 HTTP协议的基本工作原理协议的基本工作原理 HTTP协议的基本工作原理是:(1)Web浏览器和Web服务器连接;(2)浏览器通过Socket发送请求;(3)通过HTTP协议送给Web服务器,Web服务器接到请求后,进行事务处理,然后将结果返回给浏览器,显示在浏览器上;(4)当应答结束后,浏览器和服务器必须断开连接。4.5.2 Web服务器的服务器的Java实现方法实现方法 使用Java语言来编写Web服务器,可以使用ServerSocket类。创建Serv

21、erSocket类的一个对象来监听特定的端口,得到与客户端连接的Socket对象。每创建一个Socket对象,都产生一个独立的线程,来处理Web服务器与客户端的通信。Web服务器与客户端的通信是以流的形式来进行的。Web服务器得到输入流的文本信息,并进行分析,再将相应的结果通过输出流返回到客户端。194.6 实例实例5 用用Java实现实现P2P网络通信网络通信 P2P(Peer-to-Peer,端到端)。模型是与C/S(客户/服务器)模型相对应。基于C/S的用户间通信需要由服务器中转,在C/S中的服务器故障将导致整个网络通信的瘫痪。而基于P2P的用户间通信则是直接通信,去掉了服务器这一层,带

22、来的显著优点是通信时没有单一的失败点,一个用户的故障不会影响整个P2P网络。本文提供了一种用Java实现P2P网络通信的方法。2047 实例实例6 基于基于URL的的Web服务器数据访问服务器数据访问示例程序是一个使用URL类开发的访问Web服务器数据的程序。4.7.1 编程思想编程思想Java程序定位和访问Web服务器数据的最简单的方法是使用URL(Uniform Resource Locator,统一资源定位符)类。URL使用的是WWW上资源的标准地址格式。一个URL类似于一个文件名,它给出了可以获取信息的地址。使用URL类不需要考虑协议细节、数据格式和通信问题,只要知道URL就可以检索到

23、数据。类是统一定位符的抽象。URL类使用的策略设计模式,不依赖继承。URL类提供了四种构造器,用于创建URL对象。本例使用的是最简单的一种,即,public URL(String url)throws MalformedURLException.另外需要注意的是,所有虚拟机都支持HTTP和file协议。如果虚拟机不支持用户使用的其他协议,那么用户可能要安装一个协议处理器。Java不对它建立的URL进行正确性检查,只检查URL的协议部分。同时,Java也不检查URL所指向的主机是否存在或实现URL的其他要求 21 import .*;import java.io.*;class DataAcce

24、ssingpublic static void main(String args)String Surl=;if(args.length0)for(int i=0;ijava DataAccessing HTTP/1.1 200 OK Server:Microsoft-IIS/5.0 Date:Sat,28 Sep 2002 10:15:26 GMT Content-Ranges:bytes Last-Modified:Fri,06 Sep 2002 09:10:30 GMT http:/测试 本程序假设服务器端是文本数据,并且它的编码同客户机系统的默认编码方法相同。事实上,远程服务器端可能是二进制数据,或者是不同的操作系统。这些不同因素都可能导致在客户机端产生数据显示混乱的现象,在实际开发和应用中需要加以考虑。24

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

当前位置:首页 > 应用文书 > 工作计划

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

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