第三个步骤是开发服务器。服务器需要做三件事: 打造最好的电脑自学交流论坛8 k9 i/ h5 W, p: Z# A
我爱电脑技术社区--打造最好的电脑技术自学交流平台4 i7 G2 u* f7 {3 z2 A' e
, l0 g$ R" D- g2 y0 x- f" Z/ }打造最好的电脑自学交流论坛, M( m9 R% Z7 m( M& J
创建RMISecurityManager的一个实例并安装它
n# Y- c1 w* p/ p3 e电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站我爱电脑技术论坛# n" C9 \7 g; Q" O6 A% j' `* H
打造最好的电脑自学交流论坛! p' C3 f, l7 j
创建远程对象(在本例中是FileImpl)的一个实例
; _5 ]# S h! i1 O1 ?/ [9 Y' [www.520diannao.com
' C( M7 {! k! r7 b6 ~3 {! E我爱电脑技术论坛
7 `3 M/ H; P! |在RMI注册表中登记这个创建的对象。实现的范例见代码范例3。
d9 O- v" Q( Q7 F! i! Hwww.520diannao.com
2 |+ @- ?; g p3 K% @0 I, p2 d3 w打造最好的电脑自学交流论坛
! b- n) |& h, M Z ~- O代码范例 3: FileServer.java
1 u3 C9 a* B5 A: w) ?我爱电脑技术论坛
! s& `$ I7 O9 U, N% i我爱电脑技术社区--打造最好的电脑技术自学交流平台我爱电脑技术论坛& M7 O9 e. ?( V
5 Z( k% O6 M- S& l( C. P& V% ^
import java.io.*; 9 K; v; H9 ^- G1 r; ] O5 I
( f1 O0 {# @& ~8 ^/ W4 m打造最好的电脑自学交流论坛
6 C- o& w1 T4 v+ B; `我爱电脑技术社区--打造最好的电脑技术自学交流平台import java.rmi.*;
$ ~3 q! U; c+ }" _5 T& i" Q我爱电脑技术论坛
- e8 C f1 Z+ j* ]) _打造最好的电脑自学交流论坛
7 O$ W, W+ n4 k: u! E& T我爱电脑技术论坛. J8 p% Q0 e) A$ x w# ]
public class FileServer {
9 |1 C) V3 B# xwww.520diannao.com
! R9 b% T& O4 q0 ^6 o$ Fwww.520diannao.com
9 r- o- I8 q8 V1 L! I1 N2 Y打造最好的电脑自学交流论坛public static void main(String argv[]) {
. W+ [0 A4 N {9 {% I* `& b5 C我爱电脑技术社区--打造最好的电脑技术自学交流平台
) U# o9 `7 U5 C! ^& O我爱电脑技术论坛
0 n# V. P+ i3 {8 h我爱电脑技术论坛if(System.getSecurityManager() == null) {
9 l, ?" v. x9 B. K8 v( _) f: Q' l6 A电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站! c4 w6 Z+ y$ f2 m: L" F; J0 Q
7 D. l( A, ?- T1 V, l1 W. f% O我爱电脑技术社区--打造最好的电脑技术自学交流平台System.setSecurityManager(new RMISecurityManager()); 我爱电脑技术论坛* J. X5 Q6 m& ]$ s) o
$ a. h: m4 e6 _: y' P我爱电脑技术论坛
1 w; ], l: ]) C' e, z$ k4 D} / r9 C% }2 Q6 x0 e" A* B
+ ~! P$ q6 d9 f' ^我爱电脑技术论坛
* R! u9 l% B: f2 R( M打造最好的电脑自学交流论坛try {
# f' p' h8 |2 S) u0 d& @电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
- V' B3 R+ U9 N4 D" y我爱电脑技术论坛
- G% b$ L( ~* x- J V我爱电脑技术论坛FileInterface fi = new FileImpl("FileServer");
7 u) I; ` V3 {4 y, Wwww.520diannao.com
% h: U1 L4 p2 v- h- j ?www.520diannao.com
, t5 Y$ S4 [: V- q: U/ D9 M我爱电脑技术论坛Naming.rebind("//127.0.0.1/FileServer", fi);
* U+ _6 T y1 L# i& H6 V8 Y我爱电脑技术社区--打造最好的电脑技术自学交流平台打造最好的电脑自学交流论坛% b5 X# c" r0 f" }3 z7 l
' u: @6 g- a! [打造最好的电脑自学交流论坛} catch(Exception e) {
$ m/ v& `5 }+ f- v% B, ?& Ywww.520diannao.com6 }+ e" k9 \' g0 v5 [
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站* r% f8 h; w- O. s/ J9 o9 p
System.out.println("FileServer: "+e.getMessage()); www.520diannao.com- y# j7 e t9 `" A& J
: q0 L# W$ e3 c) d* L' S我爱电脑技术社区--打造最好的电脑技术自学交流平台
# Z% u" s* V# v1 L我爱电脑技术社区--打造最好的电脑技术自学交流平台e.printStackTrace();
7 P% H. s( `/ W6 [3 Q" l5 g) p我爱电脑技术社区--打造最好的电脑技术自学交流平台www.520diannao.com# e) o& S' p( z ]4 x X
我爱电脑技术论坛& q; k/ X6 s1 x S J8 B
} 打造最好的电脑自学交流论坛% D3 A( r' b4 |2 r
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站' [+ R v& i4 c! Z% `. B: s
6 R9 x, N7 z* V1 |6 A3 x
}
+ F! h- G' H( X电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站打造最好的电脑自学交流论坛/ ]2 `# e1 E; T; g
* o3 D0 C M: |) |' \www.520diannao.com} 打造最好的电脑自学交流论坛9 n# j; `4 e ]* `, \3 K( R" E
& i! I0 q$ @9 y2 d: n6 E/ S8 D我爱电脑技术社区--打造最好的电脑技术自学交流平台
9 j- B! G4 p3 Z+ G" r我爱电脑技术论坛7 H2 x0 |' R' c }* L
语句Naming.rebind("//127.0.0.1/FileServer", fi)假定RMI 注册表在缺省的端口号1099上运行。但是,如果RMI注册表在其他端口号上运行, 就必须在这一句中指定端口号。例如,如果RMI注册表在端口4500上运行,那么 这一句就变成:
* B0 E; x( I0 @$ n7 d% i我爱电脑技术社区--打造最好的电脑技术自学交流平台电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站0 {' F& E$ B' l' q1 {
www.520diannao.com: Y; a, x7 ^# C2 f+ ~2 U, `/ M0 `* ]
打造最好的电脑自学交流论坛( z; S0 f! I2 [# z; |2 E
Naming.rebind("//127.0.0.1:4500/FileServer", fi) 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站9 q2 P2 C0 u0 e( I0 j9 ?3 }
/ {& M; o3 `2 f2 p电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站打造最好的电脑自学交流论坛9 s9 f6 S( Q( ]. z1 R/ [, O
' U" y( p0 v- B: g/ q7 Y, W0 R另外,在这里要着重指出,我们假定rmi注册表和服务器是在同一台电脑上运 行。如果不是这样,只需修改rebind方法中的地址即可。 www.520diannao.com; v* P9 f b3 ?& r' U m0 z
/ V& [7 z) R6 C5 ] ?
打造最好的电脑自学交流论坛" e& B+ Q8 J' o# D+ G/ r- L
打造最好的电脑自学交流论坛4 r# L" O$ c7 Y3 e' P5 r
开发客户机
# F4 y2 }3 Z( v' v% _" ], q- Y- t我爱电脑技术论坛
0 ~* ?7 b- n- f/ |我爱电脑技术社区--打造最好的电脑技术自学交流平台
- A% b [1 q N) swww.520diannao.com我爱电脑技术社区--打造最好的电脑技术自学交流平台3 F+ q1 b ~8 i" `' {
下一步是开发客户机。客户机可以远程调用远程接口 (FileInterface)中指定的任何方法。但是为了能这么做,客户 机首先必须从RMI注册表中获得指向该远程对象的引用。获得引用之后就可以调 用downloadFile方法了。客户机的实现请见代码范例4。在这个实 现中,客户机从命令行接收两个参数: , c o& k+ f. V
* [1 Q4 |) C& W, l0 x* ~6 D
1 Q1 Y+ D/ \7 M5 |: j我爱电脑技术社区--打造最好的电脑技术自学交流平台) P% A s9 w/ ^0 u5 A( J: m( H
第一个参数是要下载文件的名称,第二个参数是要下载的文件所在主机的地 址,也就是运行文件服务器的那台电脑的地址。 我爱电脑技术社区--打造最好的电脑技术自学交流平台9 _7 K; L( _3 ^5 N) J) V3 t$ s
0 e! R! L9 U% u$ F+ L6 \2 q$ T打造最好的电脑自学交流论坛
" Z, r- H# @/ b1 n# N我爱电脑技术论坛
0 F5 R, j1 T& }5 r/ L4 m我爱电脑技术社区--打造最好的电脑技术自学交流平台代码范例4: FileClient.java 我爱电脑技术社区--打造最好的电脑技术自学交流平台$ M, F* a; f" S4 `! x
- s% ~( r- O' H. z2 u我爱电脑技术论坛
: k$ b4 v# d, F3 ?' N( ~6 L电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
9 Q+ d6 W5 ~7 |2 m电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站import java.io.*;
2 s1 R6 I8 x% v+ p
3 \& @& Y. G! q电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
0 Z" X; H" b5 B1 Rimport java.rmi.*; 我爱电脑技术论坛% y8 L, y6 j. I+ {$ W! W% Z
; u0 m% ?; S+ ^0 ^" Y. [' C
, p* S( j; X% Y- a0 g4 i& M3 `打造最好的电脑自学交流论坛
) A, r$ o' a5 `+ Z. I8 q# Y/ \/ D我爱电脑技术论坛public class FileClient{ 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站 w- G. M! B$ K! D" f0 @
0 l3 }/ M& ?% o5 h7 Xwww.520diannao.com: M5 n5 q0 I, x( j! h+ X1 g
public static void main(String argv[]) {
; ^* J! @$ t. L3 q9 @# i" f: f7 \打造最好的电脑自学交流论坛& V* b( E7 L0 D w
& S" \! t( \4 ?0 E- d9 p; P( Z7 r0 R
if(argv.length != 2) {
4 I) V; a8 Z# ]. \8 }电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站www.520diannao.com. |) W6 G5 M1 w$ \- d2 u
' m- `9 ]5 |( C' ~; ~: J8 k3 @电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站System.out.println("Usage: java FileClient fileName machineName"); 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站 }1 F4 y! } v I' c8 n( _
& W" w# }+ B U4 Z7 Z, A( E4 @我爱电脑技术社区--打造最好的电脑技术自学交流平台
: \& y1 t1 W/ c& l* X G3 swww.520diannao.comSystem.exit(0);
6 P' a5 V( w% Z" hwww.520diannao.com
, B/ R) T) G/ }打造最好的电脑自学交流论坛打造最好的电脑自学交流论坛& d# y! a6 i- f/ y7 }
}
$ L" D8 t% Y6 k4 Nwww.520diannao.com电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站; L b/ ?$ q }0 @
www.520diannao.com p. Q2 t6 ?+ [# y) U% ^
try {
1 a& A5 U& f; _我爱电脑技术社区--打造最好的电脑技术自学交流平台
7 x9 x2 A0 S& g: V: A! D我爱电脑技术论坛
& _# T0 F2 W- E ]6 q" B0 K我爱电脑技术论坛String name = "//" + argv[1] + "/FileServer"; 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站- _$ |0 \, N( d8 V: h
, {! J; e; n6 N* e' P& u- n q我爱电脑技术社区--打造最好的电脑技术自学交流平台www.520diannao.com6 B6 M( P5 `6 ]1 ^$ O& O% _
FileInterface fi = (FileInterface) Naming.lookup(name); 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站7 Q% t7 z0 B% B# n% E
2 e: E6 a, s- g. I7 M& I, r我爱电脑技术社区--打造最好的电脑技术自学交流平台8 e, q6 W: n/ X$ l7 r
byte[] filedata = fi.downloadFile(argv[0]); 我爱电脑技术论坛4 Z* m4 ]8 T4 L4 u
4 b# I6 z2 |' l电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站我爱电脑技术论坛 C% L$ Q( F2 ] a1 b0 X( {7 J3 c
File file = new File(argv[0]);
# b9 f; m8 ?' C% B! r我爱电脑技术社区--打造最好的电脑技术自学交流平台我爱电脑技术论坛! `7 N$ D" y3 f
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站/ h S0 ?& [* N1 n4 U$ _& }
BufferedOutputStream output = new 我爱电脑技术论坛& R) u R% {: b4 N, O4 {3 E7 k8 G
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站! D) r; Q( x! f5 R. B6 `. |' Y
. V7 s) A- ?0 U我爱电脑技术社区--打造最好的电脑技术自学交流平台BufferedOutputStream(new FileOutputStream(file.getName())); 打造最好的电脑自学交流论坛* ~/ [9 Z, p) f$ p0 z
打造最好的电脑自学交流论坛 I' y, D5 T/ n7 N: E3 H& T8 m
www.520diannao.com! _& i {4 r8 [: A7 D! ` ]
output.write(filedata,0,filedata.length);
# t3 O, |! }! ~- b打造最好的电脑自学交流论坛打造最好的电脑自学交流论坛) s+ A( S' e$ j. w3 h0 A
7 P/ u% U; i8 a- h6 |* \www.520diannao.comoutput.flush();
% H+ U& O5 Y6 b" M$ F' j( {9 W: p2 X/ K$ I' l+ P* [2 ^
$ g& f0 e d* @0 x打造最好的电脑自学交流论坛output.close();
, |' S" [4 \& j9 D3 u2 ~6 }7 y" B) j5 |我爱电脑技术论坛
" i2 q0 W) T. u4 \! z8 pwww.520diannao.com打造最好的电脑自学交流论坛9 a( C% r# _( Q/ {$ M
} catch(Exception e) { 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站/ s7 z$ j- S5 m
www.520diannao.com4 m0 e% D) E0 c( \- C+ ?
! ` r- D% g8 e8 V$ g2 a/ }+ C我爱电脑技术论坛System.err.println("FileServer exception: "+ e.getMessage());
6 X# s2 l4 s" }4 \打造最好的电脑自学交流论坛
; e3 I' ~. E. c6 {/ D- q, N电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站 L/ J4 d& q" L
e.printStackTrace();
/ E( T4 {6 e1 K) C" B3 I1 Cwww.520diannao.com
: I9 q/ { f5 p- x2 { e5 p打造最好的电脑自学交流论坛
" b" @9 w0 a j4 U: l我爱电脑技术论坛} 我爱电脑技术论坛- I# M* ?' @, T: X: y, u
o) I) s( y: [$ ?! ?4 wwww.520diannao.com" R1 v: ]( p# R. f* d; q6 p
}
( n9 z) S8 z/ }5 W打造最好的电脑自学交流论坛
, C0 V1 K1 w" d6 V: _) f3 s- ?( D1 T6 @我爱电脑技术社区--打造最好的电脑技术自学交流平台
$ u' Z ]. q4 l6 X1 R9 i3 J- w}
/ o* d2 a: O2 m; I9 Gwww.520diannao.com
* H) v; x; M" b" f/ U& X9 O) k电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站4 L! m; q! s" C- g' q0 Y9 C+ u3 ?
% }2 P2 n+ l' ?运行应用程序
: E7 D M' v2 g) q电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
7 k: k- Q# _$ y) ]7 a) q# B我爱电脑技术社区--打造最好的电脑技术自学交流平台电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站 D9 n- @, {4 q8 f+ o) W; ?
& [6 T/ B" J x0 d O& k5 `电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站为了运行应用程序,我们需要生成存根和基干,编译服务器和客户机,启动 RMI注册表,最后是启动服务器和客户机。 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站) m9 D1 o6 o+ W X4 g3 y7 G
/ c2 U [. T6 a m7 g& ?我爱电脑技术社区--打造最好的电脑技术自学交流平台
- ^5 o% n* F% F+ j打造最好的电脑自学交流论坛
: F) h7 l8 D/ r5 x) }5 `我爱电脑技术论坛为了生成存根和基干,请使用rmic编译器:
( g- c) [, M1 }! S8 r我爱电脑技术论坛
- ^# ~- I3 }- H0 |+ j% C8 s打造最好的电脑自学交流论坛
8 _6 @- Q7 C7 E2 o, {/ g! C打造最好的电脑自学交流论坛
) y- }8 O3 T2 z' H! X3 A, u+ @电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站prompt> rmic FileImpl www.520diannao.com& Z# m( }/ ~. K4 n7 Q' D8 ?
5 k; V) ^* _& X' x打造最好的电脑自学交流论坛" l5 s4 L1 l9 T# Q1 T9 x
www.520diannao.com3 X- |2 D3 y# W$ W* I
这将生成两个文件:FileImpl_Stub.class和 FileImpl_Skel.class。存根是一个客户机代理,基干是一个服 务器基干。
9 g) S3 t5 h* v- {7 d. u打造最好的电脑自学交流论坛打造最好的电脑自学交流论坛& c' Z$ Q( t( z6 x# j3 ~6 z
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站( B- U/ T- x7 ^, z1 V( Y# R- o; b
; c% \# O+ ]: X" i4 ^打造最好的电脑自学交流论坛下一步是编译服务器和客户机。用javac编译器来做这件事。但是请注意:如 果服务器和客户机是在两台不同的机器上开发的,为了编译客户机,需要把接口 (FileInterface)复制一份。
& N& n9 V# n- \# D3 W我爱电脑技术论坛打造最好的电脑自学交流论坛" t8 X. c) X+ e9 P8 e, S2 L
" m- G9 M0 S* s- d4 p8 Y$ _www.520diannao.com
/ l6 D( R# L% e! U% H最后,启动RMI注册表并运行服务器和客户机。为了在缺省的端口号上启动 RMI注册表,请在Windows中使用命令rmiregistry或 start rmiregistry。为了在其他端口号上启动RMI注册表,可以 提供该端口号作为RMI注册表的一个参数: 我爱电脑技术社区--打造最好的电脑技术自学交流平台% m7 B6 I1 H. U& x* ]% P% |
www.520diannao.com& T; K; R& w6 }9 D
( _$ w6 y, U$ q( V1 Q8 v* a- F
www.520diannao.com( Q+ W; z. o* m! e$ C; ^
prompt> rmiregistry portNumber www.520diannao.com" w0 N O& q% w
7 s) [/ \7 } E1 V% a8 |' @我爱电脑技术论坛
3 I( Q. A' ~- m& b
* n; i$ H+ b3 C9 a我爱电脑技术论坛运行RMI注册表之后,就可以启动服务器FileServer了。但是, 因为在服务器应用程序中正在使用RMI安全管理员,所以需要一个安全方针来与之 相配。下面是一个安全方针范例: 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站% n5 r" A7 Y2 N% c( Z( z
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站" G b3 I2 }7 p4 V7 O
1 r" H/ d: t; k3 [. Z5 |www.520diannao.com电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站9 y9 e0 f8 O& s7 t5 F+ U
grant { 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站7 c3 @ X. H7 m) [: J9 t! p3 w1 }
2 D9 |, N- h* s5 Y打造最好的电脑自学交流论坛
8 z. [2 ^; o5 V我爱电脑技术论坛permission java.security.AllPermission "", ""; / d; }, x; E6 d; l. F$ ?8 O/ ~7 V; h
我爱电脑技术社区--打造最好的电脑技术自学交流平台! L, S. ]) C P
我爱电脑技术论坛7 D2 g9 F; x% K
};
0 s8 U" k3 |" o7 bwww.520diannao.com
2 b0 i v2 R- P5 I5 s1 t1 I- x电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
, y& |/ y7 T1 R- S. Z5 D5 H9 gwww.520diannao.com
, t0 e& q+ k- r0 j7 X我爱电脑技术论坛注意: 这只是一个方针的例子。它允许任何人做任何事情。对于关键 性事务应用程序,你需要指定更严格的安全方针。
y8 S2 N, @, I8 N打造最好的电脑自学交流论坛
( |; n; z" x+ m; _/ d' k4 u8 ?www.520diannao.com
: @# q0 `7 x& t" G* v打造最好的电脑自学交流论坛
1 Y" l6 ?! U/ t [& `www.520diannao.com现在,为了启动服务器,需要把除了客户机类 (FileClient.class)之外的所有类(包括存根和基干)复制一 份。请使用以下命令启动服务器,假定安全方针位于文件policy.txt中: 我爱电脑技术社区--打造最好的电脑技术自学交流平台' A- }: G! ?* ^
' ^* o/ L) }) y# J, e/ L. J打造最好的电脑自学交流论坛
- x- ]7 r3 L' ~打造最好的电脑自学交流论坛www.520diannao.com+ {, v9 S" Y! H
prompt> java -Djava.security.policy=policy.txt FileServer 9 `2 |3 q. D; A! \& e/ T8 E% t
我爱电脑技术论坛0 ~* ]' d3 d6 g0 a
8 q5 M8 ? f6 e7 |/ }$ [$ {8 y" s9 k我爱电脑技术论坛打造最好的电脑自学交流论坛& d- d" K, {% i S9 l- x- G
为了在另一台机器上启动客户机,需要复制远程接口 (FileInterface.class)和存根 (FileImpl_Stub.class)。请使用以下命令启动客户机: ; P. k4 {2 z# e& z0 V! s$ M
, v& {7 I2 R2 a9 O& g* _; K打造最好的电脑自学交流论坛
% c( X% C& z' t+ \3 Q+ c电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
. H$ D5 c" V+ L) bwww.520diannao.comprompt> java FileClient fileName machineName 我爱电脑技术社区--打造最好的电脑技术自学交流平台 x4 f2 p. i2 j' e; t2 G
我爱电脑技术社区--打造最好的电脑技术自学交流平台7 B5 }0 C# H( m9 N! Q. T+ }) s
, ?) q5 j0 `3 N" z电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站4 u% g2 q" G0 ~* [/ K- M+ `7 u
其中fileNamefileName是要下载的文件,machineName 是该文件所在的机器(运行文件服务器的那台机器)。如果一切顺利,那么客户 机就存在了,下载完的文件保存在本地的机器上。