ImageVerifierCode 换一换
格式:PPT , 页数:44 ,大小:293KB ,
资源ID:4789863      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-4789863.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Thinking in Java 15(分布式计算).ppt)为本站会员(yjrm16270)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

Thinking in Java 15(分布式计算).ppt

1、Java编程思想,第十五章:分布式计算,网络编程简介(socket),同一个网络上的机器间信息交换网络编程是基于 IP 协议的网络编程通过 streams 和 sockets 来实现,识别一台机器,DNS(Domain Name System) 名称: , , 等等 IP 地址: 123.255.28.120 InetAddress InetAddress.getByName(String)/ Determines the IP address of a host:/ or 206.26.48.100,/: c15:WhoAmI.java ( p653 ) / Finds out your

2、network address when / youre connected to the Internet.import .*; public class WhoAmI public static void main(String args) throws Exception if(args.length != 1) System.err.println(“Usage: WhoAmI MachineName“);System.exit(1);InetAddress a = InetAddress.getByName(args0);System.out.println(a); /:,Ans:C

3、:Java WhoImI localhost Localhost/127.0.01C:Java WhoImI tju Tju/127.0.0.1,IP 地址分配,静态 IP 和动态 IP 静态IP是一个固定的地址,它必须是唯一的 一个动态 IP 是由在同一个网络中的 DHCP ( Dynamic Host Configuration Protocol ) 服务器来分配的,IP 地址分配,Internet,DHCP服务器,静态 IP,动态 IP,服务器和客户机,服务器: 提供服务,比如Web服务器,FTP服务器客户机: 连接服务器来请求信息,服务器和客户机,Internet,Web 服务器 Ft

4、p 服务器,服务器,客户机,端口1,端口 2,Sockets,端口( port ),一个IP地址并不足以完整标识一个服务器 一台物理性的机器中,往往运行着多个服务器(程序) 端口定义一台机器上的一种服务(软件抽象概念) 系统分配总数 11024 你可以定义自己的端口从 1025 开始,Sockets,一个服务器与客户机之间连线的终端 针对一个特定的连接,每台机器上都有一个“套接字”,可以想象它们之间有一条虚拟的“线缆”。 一个 socket 可以被认为是一个本地文件 你可以通过 streams 读/写一个 socket,ServerSocket,服务器使用一个 ServerSocket 对象来

5、侦听一个连接的端口 ServerSocket.accept( ):一旦一个客户建立了一个连接,将返回一个 socket accept( )方法会暂时陷入停顿状态(阻塞),直到某个客户尝试同它建立连接。但其他进程仍能正常运行,简单的服务器和客户端,服务器: ( p656 )客户端: ( p658 ),/: c15:JabberServer.java 服务器 (先运行) ( p656 ) / Very simple server that just / echoes whatever the client sends. import java.io.*; import .*; public cla

6、ss JabberServer / Choose a port outside of the range 1-1024:public static final int PORT = 8080;public static void main(String args) throws IOException ServerSocket s = new ServerSocket(PORT);System.out.println(“Started: ” + s); /等待客户端连上,try / Blocks until a connection occurs:Socket socket = s.accep

7、t();try System.out.println( “Connection accepted: “+ socket);BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream();/ Output is automatically flushed by PrintWriter:PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),true

8、);,while (true) String str = in.readLine(); / 从客户端读取信息if (str.equals(“END“) break;System.out.println(“Echoing: “ + str); /在屏幕上输出读取信息out.println(str); / 输出到客户端/ Always close the two sockets. finally System.out.println(“closing.“);socket.close(); finally s.close(); /:,/: c15:JabberClient.java 客户端(后运行)

9、 ( p658 ) / Very simple client that just sends / lines to the server and reads lines / that the server sends.import .*; import java.io.*;public class JabberClient public static void main(String args) throws IOException / Passing null to getByName() produces the/ special “Local Loopback“ IP address,

10、for/ testing on one machine w/o a network:,InetAddress addr = InetAddress.getByName(null);/ Alternatively, you can use / the address or name:/ InetAddress addr = / InetAddress.getByName(“127.0.0.1“);/ InetAddress addr = / InetAddress.getByName(“localhost“);System.out.println(“addr = “ + addr);Socket

11、 socket = new Socket(addr, 8080); /JabberServer.PORT,/ Guard everything in a try-finally to make/ sure that the socket is closed:try System.out.println(“socket = “ + socket);BufferedReader in =new BufferedReader(new InputStreamReader(socket.getInputStream();/ Output is automatically flushed by Print

12、Writer:PrintWriter out =new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(),true);,for(int i = 0; i 10; i +) out.println(“howdy ” + i); / 输出到服务器String str = in.readLine(); / 从服务器读回信息System.out.println(str); / 在屏幕上输出读回信息out.println(“END“); finally System.out.println(“cl

13、osing.“);socket.close(); /:,Ans: Client addr = localhost/127.0.0.1 socket = Socketaddr=localhost/127.0.0.1,port=8080,localport=1036 howdy 0 howdy 1 howdy 2 howdy 3 howdy 4 howdy 5 howdy 6 howdy 7 howdy 8 howdy 9 closing.,Ans: Server Started: ServerSocketaddr=0.0.0.0/0.0.0.0,port=0,localport=8080 Con

14、nection accepted: Socketaddr=/127.0.0.1,port=1036,localport=8080 Echoing: howdy 0 Echoing: howdy 1 Echoing: howdy 2 Echoing: howdy 3 Echoing: howdy 4 Echoing: howdy 5 Echoing: howdy 6 Echoing: howdy 7 Echoing: howdy 8 Echoing: howdy 9 closing.,TCP vs. Datagrams,消息通过包来传送TCP(Transfer Control Protocol)

15、: 有保证的传递,慢UDP(User Datagram Protocol): 不可靠,快,Datagrams : UDP,类 DatagramSocket 用来支持数据报通讯:DatagramSocket( );DatagramSocket(int port);类 DatagramPackte 传输数据的载体:DatagramPackte(byte buf, int length)DatagramPackte(byte buf, int length,InetAddress addr, int port)void receive(DatagramPacket p)void send(Datag

16、ramPacket p),使用UDP编程 客户端 import java.io.*; import .*; import java.util.*; class QuoteClientpublic static void main(String args)int port;InetAddress address;DatagramSocket socket = null;DatagramPacket packet;byte sendBuff = new byte256;if(args.length != 2)System.out.println(“Usage: java QuoteClient “

17、);return;,trysocket = new DatagramSocket(); / bind to the socketcatch(.SocketException e)System.err.println(“Could not create datagram socket.“);if(socket != null)try/ send requestport = Integer.parseInt(args1);address = InetAddress.getByName(args0);packet = new DatagramPacket(sendBuff,256,address,p

18、ort);socket.send(packet);/ get responsepacket = new DatagramPacket(sendBuff,256);socket.receive(packet);String received = new String(packet.getData(),0);System.out.println(“Quote of the Moment:“ + received);socket.close();catch(IOException e)System.err.println(“IOException: “ + e);e.printStackTrace(

19、); ,使用UDP编程 服务器端 import java.io.*; import .*; import java.util.*;class QuoteServerThread extends Threadprivate DatagramSocket socket = null;private DataInputStream qfs = null;QuoteServerThread()super(“QuoteServer“);trysocket = new DatagramSocket(); System.out.println(“QuoteServer listening on port:“

20、 + socket.getLocalPort();catch(.SocketException e)System.err.println(“Could not create datagram socket.“);this.openInputFile();,public void run()if(socket = null)return;while(true)trybyte buf = new byte256;DatagramPacket packet;InetAddress address ;int port;String dString = null;/ receice requestpac

21、ket = new DatagramPacket(buf,256);socket.receive(packet);address = packet.getAddress();port = packet.getPort();/ send responseif(qfs = null)dString = new Date().toString();elsedString = getNextQuote();dString.getBytes(0,dString.length(),buf,0);packet = new DatagramPacket(buf,buf.length,address,port)

22、;socket.send(packet);catch(IOException e)System.err.println(“IOException: “ + e);e.printStackTrace();,protected void finalize()if(socket != null)socket.close();socket = null;System.out.println(“Closing datagram socket.“);private void openInputFile()tryqfs = new DataInputStream(new FileInputStream(“o

23、ne_liners.txt“);catch(java.io.FileNotFoundException e)System.out.println(“Could not open quote file. Serving time instead.“);,private String getNextQuote()String returnValue = null;tryif(returnValue = qfs.readLine() = null)qfs.close();this.openInputFile();returnValue = qfs.readLine(); /the file has

24、at least one input linecatch(IOException e)returnValue = “IOException occurred in server.“;return returnValue; class QuoteServerpublic static void main(String args)new QuoteServerThread().start(); ,URL(Uniform Resouse Locator),URL: 统一资源位置 例如: 使用 URL getDocumentBase() 来得到一个基本的 URL URL 对象标识在网络上的一个资源,

25、JNLP (Java Network Launch Protocol)简介,签名 appletsJava 网络加载协议 (JNLP) 和 Java Web Start (JAWS),签名 applets,Sandbox 模型: applet 访问本地磁盘和连接本地网络被拒绝 一个已签名的 applet 将允许用户验证其合法性 证书: 将一个 applet 进行签名, 需要将这个 applet 封装在一个 jar 文件中并将 jar文件用一个证书或者密钥进行标记,签名 applets: 证书,证书: 由一个可信实体颁发, 例如VeriSign, Thawte用于检验目的: 你可以创建自己的证书,

26、keytool genkey alias mykey keystore keytool list keystore jarsigner keystore jarfile mykey,签名applets,当加载一个 applet, 浏览器将提示用户来验证 applet,签名 applets,证书的更多信息,签名 applets,可信的 applet 将允许 applet 访问本地硬盘, 例如 JFileChooser,JNLP and Java Web Start,Applets 被限制在浏览器中 JNLP 允许一个应用程序被下载并执行 一个 JNLP 应用程序可以从 Internet 下载资源

27、 JNLP: Java Network Launch Protocol Java 网络加载协议,JNLP and Java Web Start,Sun公司的实现: JAWS JAWS: Java Web Start 程序员园地: http:/ 确认 jnlp.jar 在 CLASSPATH中,JNLP 应用程序,需要一个发布文件: 一个 XML 文件可以给予客户端信息使其下载和安装 可以用证书签名或者不签名 必须使用 JNLP 服务来得到访问本地资源的权限 : javax.jnlp 若使用其他方法得到本地资源将会引起安全性异常错误,JNLP: .jnlp 文件,XML文件格式描述下载 URL, 安全性,以及有关 jar 的一般信息,配置一个JNLP应用程序的步骤,编译所有的 class 文件 将所有文件打包到一个 jar 文件中 用证书对 jar 进行签名 建立一个 JNLP 文件 建立一个具有指向 JNLP 文件超链接的HTML 文件,Java Web Start 应用程序管理,总结,未经签名的 applets 不能访问本地资源: sandbox model 一个 applets 要经过可信实体颁发的证书来进行签名 JNLP 是一个允许应用程序被远程配置的协议 JAWS 是 Sun 公司的一种 JNLP 实现,

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报