第4章-Java网络应用ppt课件(全).ppt
《第4章-Java网络应用ppt课件(全).ppt》由会员分享,可在线阅读,更多相关《第4章-Java网络应用ppt课件(全).ppt(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 网络 应用 ppt 课件
限制150内