Lời mở đầu Sự bùng nổ của mạng Internet cùng với các ứng dụng của nó đã đem lại cho xã hội một cuộc sống tiện nghi. Mạng Internet đã giúp cho con người bước vào một kỷ nguyên công nghệ thông tin và tri thức. Để có được thành tựu đó thì lĩnh vực phân tán trong hệ tin học cũng đóng một vai trò hết sức quan trọng. Mục đích của lập trình mạng phân tán là tận dụng các khả năng tính toán và khai thác dữ liệu của các hệ thống máy tính ở xa để thực hiện những tính toán nhanh hơn trên cơ sở sử dụng nhiều bộ xử lý, nhiều bộ nhớ đồng thời hoặc nhiều dữ liệu quý giá được phân tán khắp nơi. Trên nền hệ thống mạng máy tính được kết nối như hiện nay, việc xử lý phân tán sẽ giải quyết được những bài toán lớn hơn, phức tạp hơn của thực tế. Trong phạm vi của tiểu luận này nhóm chúng em chỉ đề cập đến hai phần: Phần 1: Lý thuyết về Lập trình mạng phân tán và RMI Phần 2: Bài toán: Người sản xuất Người tiêu thụ. Mặc dầu nhóm chúng em đã rất cố gắng tìm tài liệu để tham khảo trong quá trình làm đề tài nhưng với kiến thức và kinh nghiệm còn hạn chế sẽ không tránh khỏi những sai sót, kính mong thầy giáo và các bạn góp ý thêm.
Tiểu luận môn Lập trình mạng nâng cao Đề tài ! " # $%&'(& )&* '+,-'.&' '/0& !"# $ 1 Tiểu luận môn Lập trình mạng nâng cao Lời mở đầu )23&*&4567,+&*&89:&9853&*;</5.5=&*>?&*567&@ABA9, C+/5'DEB'F/,F85$F5GH&*8/0&&*'/I+&*&89:&98AB*/JK5'D5D& &*LM/2L<5;ND,F8OP&*$QR&5S&*&*'08'S&*8/&;N8:/8'=5IT5@ ALU58'N&'8)$A@8'VCW&';)5K'X&8.&8:D&*'08/&'Y55Z&*A@&*,F8 ;7/8:['\8G=5]$7&8:Y&*I ?5A^5'567C_K8:V&',+&*K'X&8.&CN8_&>?&*5.5O'`&a&*8^&' 8D.&;NO'7/8'.5>bC/0$5675.5'08'H&*,.Q8^&'cE7AT8')5'/0& &'b&*8^&'8D.&&'7&''d&8:R&5dGcGe>?&*&'/f$2FEeCgh&'/f$2F &'<Ai&*8'M/'Dj5&'/f$>bC/0$]$g*/.ALU5K'X&8.&O'kK&d/I:R& &f&'08'H&*,+&*,.Q8^&'ALU5O\8&H/&'L'/0&&7Qh;/05EeCgK'X& 8.&Gl*/`/]$Q\8ALU5&'b&*2N/8D.&C<&'d&hK'=58+K'd&5678')58\I :D&*K'+,;/5678/T$C$_&&NQ&'@,5'J&*9,5'mAf5_KA\&'7/ K'n&# Phần 1: Lý thuyết về Lập trình mạng phân tán và RMI Phần 2: Bài toán: Người sản xuất - Người tiêu thụ. j5>n$&'@,5'J&*9,AB:(85H*k&*8V,8N/C/0$AT8'7,O'`D 8:D&*]$.8:V&'CN,Af8N/&'L&*;</O/\&8'=5;NO/&'&*'/0,5[&'+& 5'\GlO'S&*8:.&'O'o/&'b&*G7/G@8hO^&',D&*8'nQ*/.D;N5.52+& *@Kg8'R,I %&'%(%) $%&'(&)&*p'+,-'.&''/0& q Tiểu luận môn Lập trình mạng nâng cao *+ ,-./0123456789 :46+ $6;'<=%%> 08'H&*8^&'8D.&K'X&8.&AB8+DALU52L<5&*Dj5GD;</5.5'0 8_K8:$&*h;N'0O'.5'5'6rC/9&8s9:;9:tI/058^&'8D.&K'X&8.&;f5d 2`&5Z&**/H&*&'L;/058^&'8D.&567'0O'.5'5'68:R&K'+,;/:F&* C<&IbC/0$ALU55'=78:R&&'/f$,.Q5'6c8+/&'/f$;u8:^Au7CgO'.5 &'7$O\8&H/&'7$8'S&*]$7,+&*>/0&:F&*vw'V&'8'N&'5.5&d/ CN,;/05h5.5K'[&*27&h5.55'/&'.&'567,F85d]$7&I #?%)@%A%BC)DEFAGHIJ46+K4L'L 6L%M+NJO _K8:V&'K'X&8.&AH/8LU&*2x&*5.5'8:/0$*Y/K'Ld&*8'=58y E7CN5.5''UK8.5*/b75.5AH/8LU&*z7;75@&'b&*,BC0&'5N/ Aj8r27D*i,5.5K'Ld&*8'=5;N8'$F58^&'t&x,8:R&5.5,.QO'.5 &'7$r5'^&'E.5CN&x,8:R&5.5zp,.Q`Dz7;7O'.5&'7$t;N5@ 8'T8:/0$*Y/C{&&'7$AT8:7DA4/8/&I :D&*,S'V&'C/9&8s9:;9:8:$Qf&8'H&*h5.5QR$5n$ALU5 >u5'G7&*,F8|D:,78r>+&*t8:$&**/7&r>+&*8y&*5jK8R&*Y/s*/.8:u 'Dj55.5>bC/0$8:D&*tI.Q5'69:;9:K'X&8^5'|D:,78QR$5n$h EeCgAT5@ALU5O\8]$`;N*e/8:`CM/5'D,.QO'.5'C/9&8I.QO'.5' K'X&8^5'|D:,788:`CM/;N'/T&8'u8'S&*8/&5'D&*LM/Ge>?&*I } Tiểu luận môn Lập trình mạng nâng cao qI1:/0$*Y/K'Ld&*8'=58yE7 qIq-/\&8:J5z7;7 f5d2`&hALU5EXQ>)&*>)78:R& kiến trúc ba tầng &'L 'V&'q n$8/R&CN8n&*27D*i, hai lớp trung gian 8$2 và O9C98D&h 5'J&*ALU5'08'H&*8+D:78'9DQR$5n$I.5C<K&NQ5'j&5.5CM/ *Y/K'Ld&*8'=55675'Ld&*8:V&'O'.5'rC/9&8t8</5.52/\&8'7, 5'/\$;N*e/8</>u5';?8:/0$*Y/8yE7I<KO9C98D&C/R&C+5;</ 8$28'S&*]$7C/R&O\8I@AY55.58'7,GH567CM/8:/0$*Y/ 8yE78y,F8C/R&O\8&NDA@h8')5'/0&CM/*Y/8</AH/8LU&*8')5 8'/>u5';?8yE7;NG7$A@*e/5.5*/.8:u8:`C+/5'D8$2I:D&* ~ 8$2•O9C98D& '7,5'/\$8yE7 8$2•O9C98D& '7,5'/\$8yE7 n&**/7D;_& 'Ld&*8:V&' O'.5' 'Ld&*8:V&' 5'6 08'H&* V&'q#-/\&8:J5278n&*567RMI #.QO'.5' #.Q5'6 e/QR$5n$;f>bC/0$ :`C+/8'S&*8/&QR$5n$ V&'1#)8:7DA4/*/b7AH/8LU&*O'.5';NK'?5;?r5'6t Tiểu luận môn Lập trình mạng nâng cao z7;7q-h5.5*/7D>/0&,</ALU5EXQ>)&*ABCN,5'DO9C98D& C€/8'M/IGe>?&*K'•K.&'E+AT8')5'/0&;/05O\8&H/8</5.5 AH/8LU&*>u5';?8yE78'7Q5'DO9C98D&I Tầng tham chiếu từ xaCN8n&*8/\K8'9DIn&*&NQ>u5';N]$`&Cg 5.58'7,5'/\$8</5.5AH/8LU&*>u5';?8yE7I‚z-1I1h8n&* &NQ8')5'/0&O•8&H/8'9D5d5'\A/T,p8</A/T,I\&z7;7q -h8n&*&NQALU55`/8/\&AT&X&*57D;/05'€8:UATO^5''D+8 5.5AH/8LU&*>u5';$8yE7A7&*5'M8')5'/0&8'S&*]$7wh A@CN5.5'O\8&H/C/9&8s9:;9:I Tầng giao vận>)78:R&O\8&H/s*/b75.5,.Q8^&'8:D&* ,+&*I*7Q5`O'/'7/5'Ld&*8:V&'5'+Q8:R&'7/z8:D&*53&* ,F8,.Qh5'J&*5Z&*8')5'/0&O\8&H/8'S&*]$7s567 5'^&',.QA@In&**/7D;_&ALU58'/\8O\AT8'/\8C_K,F8 O\8&H/*/b7,.QC/9&8;</,.Q9:;9:I /`Geh875@AH/8LU&*C1 ALU55N/Aj85'+Q8:R&,.QK'?5;?CI RMI567Java*/JK878+D:7'7/C<K8:$&**/7&C1_SkelrO'S&*5n& 8'/\8AH/;</Java 2 SDKt;NC1_StubI<KC1_StubGlALU5&+K;f ,.QO'.5'BI-'/AH/8LU&*B18:R&,.QB8:/0$*Y/C1h,.Q`DJava Gl5'$QT&CM/*Y/A\&C<K C1_StubI C1_Stub Gl5'u$8:.5'&'/0, A@&**@/5.58'7,GH;N5'$QT&5'J&*]$7,+&*A\&5'D,.QCI+/ ,.QC,C<KC1_SkelrC1_StubALU5&+K;f;N8'7Q8'\cJava 2 SDKtGl&'_&8'7,GHAT5'$QT&;NDO'S&**/7&Au75'm8Ld&*8'^5';</ AH/8LU&*C1G7$A@*Y/K'Ld&*8'=58Ld&*=&*AT8')5'/0&I-\8]$` &\$5@>DK'Ld&*8'=5567AH/8LU&* C18:`;fGlALU5C<KC1_Skel rC1_Stub 8'7Q 8'\ c Java 2 SDKt A@&* *@/ 8:` &*LU5 5'D C1_Stub. C1_Stub5'$QT&*/7DO\8]$`5$H/53&*5'DB1I'9D5d 5'\&NQh5@8'T'V&'>$&*&'LB1A7&*8:7DA4/8:)58/\K;</AH/8LU&*C1 &*7Q8:R&53&*,F8,.QI*DN/:7h;</G)8:U*/JK567C<K8:$&**/7& C1_StubhO'/O\8&H/,+&**jKG)5HhC<K8:$&**/7&StubGlC$S&2/\8 5.5'8'S&*2.DC€/A\&AH/8LU&*B1I ')58\5@,F85X$'o/CN#N,8'\&NDATB18'7,5'/\$ALU5A\& C1O'/O'S&*5@C<KC1&NDALU55N/Aj8c,.QBƒC1_Stub8:R&,.QB 5'mCN,C<K8:$&**/7&5'$QT&A4/8'7,GH;N8')5'/0&5.5*/7D8'=5,+&*h &@O'S&*K'`/CN'V&'`&'567AH/8LU&*C1ITCN,ALU5A/f$A@hC<K567 „ Tiểu luận môn Lập trình mạng nâng cao AH/8LU&*C15n&5$&*5(K,F8*/7D>/0&8Ld&*=&*hALU5*Y/CN*/7D>/0& 8yE7;</5.5K'Ld&*8'=55'DK'•KAH/8LU&*B1*Y/&@8:R&,.QBI Stub 8'LM&*8:)58:R&,.QO'.5'hO'S&*c8:R&,.Q5'6I@5@;7/8:[ A@&**@/5.58'S&*8/&27D*i,# u&'>7&'đối tượng từ xa5n&Ge>?&* S8`;fK'Ld&*8'=55n&8:/0$*Y/ B'D.5.58'7,GH;N8:$Qf&5'DSkelI StubGl5'$QT&&'b&*8'S&*8/&8:R&5'D,.Q5'6I‚K'^7,.Q5'6hAH/ 8LU&*Skel&'_&8')5'/0&&'b&*5S&*;/05G7$AT*Y/K'Ld&*8'=58y E7# /`/,B5.58'7,GH .5Au&'AH/8LU&*AT8')5'/0&CM/*Y/'N,8Ld&*=&* ')5'/0&CM/*Y/K'Ld&*8'=58'9DQR$5n$ _K'UKO\8]$`AT8:`CM/'Dj58'S&*2.D5.5C€/&*D+/C0 e/8:`CM/*@/5.5>bC/0$O\8]$`5'DStubc8:R&,.QO'.5'I V&'8:R&,S8`]$.8:V&'845'=5*@/5.58'7,GHh5.5>bC/0$8:`CM/ ;NG)8:7DA4/*/b75.5AH/8LU&*8:$&**/7&8:D&*O…8'$_88:/0$*Y/8y E7I † 5#C/9&8 Y/'N,5?5 2Fc8$2 #8$2 #-9C G#9:;9: :`C+/*/.8:u 'Dj5&*D+/C0 Y/'N,5?5 2Fc9:;9: '$QT&5.5*@/ 5.58'7,GH e/8:`C+/O\8]$` 'Dj5&*D+/C0 V&'}#)8:7DA4/*/b7AH/8LU&*O'.5';NK'?5;?8'S&*]$7AH/ 8LU&*8:$&**/7& Tiểu luận môn Lập trình mạng nâng cao !%P@'QCARC)DHIJ }I1:R&,.QK'?5;?r9:;9:t (a) Thiết lập giao diện từ xa :D&*z7;7hđối tượng từ xaCN8'T'/0&567,F8C<K5N/Aj8*/7D >/0&9,D89I(85`5.5K'Ld&*8'=5567các giao diện từ xaK'`/ALU5 O'7/2.DK$2C/5AT5.5,.QzO'.55@8'T*Y/ALU5I.5*/7D>/0&8y E7K'`/A`,2`D&'b&*8^&'5'(8G7$# /7D>/0&8yE7K'`/O'7/2.DK$2C/5. /7D>/0&8yE7O\8'y7‡7;7I:,/I9,D89I Y/K'Ld&*8'=5K'`/O'7/2.D;</,0&'Af8':DˆGATO/T, GD.85.5&*D+/C0‡7;7I:,/I9,D89‰E59K8/D&I -/T$>bC/0$5675.5AH/8LU&*8yE7ALU58:$Qf&A/;N*/.8:u &'_&;fK'`/ALU5O'7/2.D&'LCNO/T$*/7D>/0&9,D89h O'S&*K'`/CNC<KI (b) Xây dựng các lớp cài đặt các giao diện từ xa ‚K'^7,.Q5'6h5'J&*87K'`/EXQ>)&*C<K5N/Aj85.5K'Ld&* 8'=5ALU5O'7/2.D8:D&**/7D>/0&8yE7I @/5'$&*h5.5C<K5.55N/Aj8AH/8LU&*8yE75n&K'`/# -'7/2.D:x&*&@5N/Aj8^8&'(8,F8*/7D>/0&8yE7 u&'&*'W7AH/8LU&*8yE7 N/Aj85.5K'Ld&*8'=5AT5@8'T8:/0$*Y/ALU58yE7I (c) Cài đặt các phương thức từ xa <K5N/Aj85.5AH/8LU&*8yE7K'`/5N/Aj88(85`5.5K'Ld&*8'=5 ABALU5O'7/2.D8:D&**/7D>/0&8yE7 .58'7,GHh5.5*/.8:u8:`;f567K'Ld&*8'=58yE75@8'TCNO/T$>b C/0$2(8O%567z7;7hOT5`5.5AH/8LU&*I (d) Xác định các đối tượng dịch vụ T8:$Q5_KALU5AH/8LU&*8yE78:R&,.QK'?5;?hO'.5''N&* 5n&5@ALU5AH/8LU&*A+/>/0&8+/&d/A@I-'.5'QR$5n$AH/8LU&*A@ &'L8'\&NDƒ'Ld&*8'=55'$&*CN*Y/K'Ld&*8'=58yE7567,F8AH/ 8LU&*K'?5;?;N8+D:7,F8AH/8LU&*A+/>/0&AT&'_&O\8]$`8:`CM/I (e) Bộ đăng ký RMI registry Š Tiểu luận môn Lập trình mạng nâng cao 'Ld&*8:V&'>u5';?5675'J&*87'DN&8DN&5'L7G‹&GN&*8')5 '/0&I(&Af5'^&'5675'J&*87CN5N/Aj8AH/8LU&*567:D>$58,KC 8:R&,F8,.Q;Nc,F8,.QO'.5r5'Ld&*8:V&'O'.5t,$H&*Y/K'Ld&* 8'=5*989G5:/K8/D&rtAT2/\8ALU58'S&*8/&,S8`;N*/.2.&5675.5G`& K'Œ,5@8:R&5'Ld&*8:V&'K'?5;?I }Iq:R&,.QO'.5'rC/9&8t /\85'Ld&*8:V&'c8:R&,.QO'.5'r5'Ld&*8:V&'O'.5'tATQR$ 5n$5'Ld&*8:V&'K'?5;?5$&*5(K&'b&*8'S&*8/&;f5.5G`&K'Œ,8y 5.5AH/8LU&*ABAa&*OgI </z7;7h8(85`5.58'7D8.5O\8&H/;NG7D5'•K5.580K8/&8y,F8 ,.Q8^&';f,.QO'.5'Af$K'`/8'S&*]$7C<K2`D;0*Y/CN 95$:/8Q7&7*9:I • Tiểu luận môn Lập trình mạng nâng cao *++ :+S9TU+VW0XYTU++Z0[ 7D*i,# ŽXQ>)&*'0q9:;9:'D+8AF&*8'9D&*$QR&Cg8:7DA4/8'S&* A/0K ŽXQ>)&*5'Ld&*8:V&'2x&*z7;78'T'/0&5'=5&a&*8+/q8:+, &R$8:R& Ž/\85'Ld&*8:V&',SK'o&*8:R&,N&'V&']$.8:V&''D+8AF&* 567'0 $A?\]<P^ •&*>?&*Cg8'$Q\8C_K8:V&',+&*;NABAf5_Kc8:R&ATEXQ >)&*5'Ld&*8:V&'&'x,*/`/]$Q\82N/8D.&I :D&*2N/8D.&&NQ87E•8'7/8:+,CN8:+,G`&E$(8hOg'/0$CN ;N8:+,8/R$8'?hOg'/0$CNI 7*Y/GHCLU&*G`&K'Œ,ABALU5G`&E$(8:78:R&8:+,G`& E$(8;NCNGHCLU&*G`&K'Œ,ABALU58:+,8/R$8'?I +/8:+,G`&E$(887Aj88'R,,F85S&*8d•I:+,Gl 8a&**/.8:u5675S&*8dG)O/0&•8'R,1Ad&;u,€/O'/&'_&ALU5 8'S&*A/0K8y8:+,8'S&*2.D5'D2/\8AB8/R$8'?8'R,,F8G`& K'Œ,I Ld&*8)h8:R&8:+,87Aj8,F85S&*8d•I/.8:u5675S&*8d G)O/0&•ALU58a&*CR&,F8Ad&;uO'/8:+,&'_&ALU58'S&*A/0K 8y8:+,8'S&*2.DAB5@,F8G`&K'Œ,;y7ALU5G`&E$(8I T*/`/]$Q\82N/8D.&AB&R$:7h87Ge>?&*,F8GH'N,&*$QR& 8'6QG7$# tang(E) #8a&**/.8:u5S&*8dCR&,F8Ad&;u cho(E,i)#8:9D5'DA\&O'/*/.8:u5675S&*8dG)O/0&‰C<&'d& 'Dj52x&*/ send(S)#*e/8'S&*A/0KA\&8:+,SI receive(S)#&'_&8'S&*A/0K8y8:+,SI '9D*/`8'/\85672N/8D.&h8:+,G`&E$(85'm5@8'TG`&E$(8 G`&K'Œ,&\$# p•‘ ;N8:+,8/R$8'?5'm5@8'T8/R$8'?G`&K'Œ,&\$# •p’“ ;</# #GHCLU&*G`&K'Œ,ABG`&E$(82c/8:+, ” Tiểu luận môn Lập trình mạng nâng cao #GHCLU&*G`&K'Œ,AB8/R$8'?2c/8:+, •#5S&*8dG)O/0&8/R$8'?Aj88:R&8:+,G`&E$(8 •#5S&*8dG)O/0&G`&E$(8Aj88:R&8:+,8/R$8'? 7*Y/ / CNG`&E$(88'=/;N / CN8/R$8'?8'=/I 78'(Q:x&*# / • /Ž1 • /Ž #8$X&8'9D8:_88)5?52F5678:+,G`&E$(8I / • / #8$X&8'9D,H/]$7&'0&'X&]$`I (&Af5672N/8D.&A\&AXQCN5n&K'`/5'=&*,/&'# / • /Ž :+,G`&E$(85'mG`&E$(88'R,G`&K'Œ,&\$'/0&8+/GH CLU&*5[&C+/r8=5CNCLU&*G`&K'Œ,ABG`&E$(8&'L&*5'L78/R$8'? ALU5t&'o'd&h8=5CN# p•‘ *'W7CN8:L<5O'/8')5'/0&8/\&8:V&'G`&E$(8h8:+,K'`/O/T, 8:7E9,A/f$O/0&# p•‘ 5@8'o7,B&'7QO'S&*h&\$8'o7,B&,</G`&E$(88/\Kh&\$O'S&*8'V 8+,&*y&*G`&G$(8I €/Cn&8:+,G`&E$(8:7,F8G`&K'Œ,8'VGl8a&*8'R, ,F8Ad&;ur–Ž1t;N8:+,Gl*e/8'S&*A/0KA\&5'D8:+, rsendrCSttAT2.D5'D2/\85@,F8G`&K'Œ,;y7ALU5G`&E$(8I +/8:+,hO'/&'_&ALU58'S&*A/0K8y8:+,8'S&*2.D5@ G`&K'Œ,;y7ALU5G`&E$(8rreceiverPStth8:+,Gl8a&**/.8:u5S&* 8dG)O/0&•8'R,,F8Ad&;urtangrNP’ttI :+,8/R$8'?5'm5@8'T8/R$8'?G`&K'Œ,&\$;{&5[&G`& K'Œ,h&*'W7CN# •p’“ =5CN8:L<5O'/8/R$8'?,F8G`&K'Œ,h8:+,K'`/O/T,8:7 A/f$O/0&# •p’“ 5@8'o7,B&'7QO'S&*h&\$8'o7,B&,</8')5'/0&;/058/R$8'?h5[& &*LU5C+/8'V8+,&*y&*;/058/R$8'?I 7$,€/Cn&8/R$8'?G`&K'Œ,h8:+,Gl8a&*2/\&8'R,,F8 Ad&;ur–Ž1t;N*e/8'S&*A/0K8'S&*2.D5'D8:+,2/\85@G`& K'Œ,;y7ALU58/R$8'?rsendrPSttI 1“ [...]... trạm sản xuất, tiêu thụ và các giá trị của Server sản xuất và Server thụ gửi và nhận 29 Tiểu luận môn Lập trình mạng nâng cao TÀI LIỆU THAM KHẢO - [1] Hệ tin học phân tán – TS Lê Văn Sơn, Nhà xuất bản Đại học quốc gia TP Hồ Chí Minh [2] Các tài liệu tham khảo trên internet 30 Tiểu luận môn Lập trình mạng nâng cao MỤC LỤC ĐẠI HỌC ĐÀ NẴNG 1 Báo cáo Tiểu luận: 1 LẬP TRÌNH MẠNG... lắng nghe để thực thi 28 Tiểu luận môn Lập trình mạng nâng cao Cửa sổ Client để thực thi lệnh: Gõ lệnh start : Khởi động các Server 1,2 hoạt động Gõ lệnh sanxuat : Nếu muốn gọi Server sản xuất (server1) làm việc trước (gửi thông điệp) Gõ lệnh tieuthu : Nếu muốn gọi Server tiêu thụ (server2) làm việc trước (gửi thông điệp) Gõ lệnh stop : Nếu muốn dừng các việc sản xuất và tiêu thụ của các server lại Gõ.. .Tiểu luận môn Lập trình mạng nâng cao Sau khi nhận được thông báo từ trạm CS (receive(CS)), trạm sản xuất PS sẽ tăng giá trị của công tơ sự kiện NC’ thêm một đơn vị (tang(NC’)) Thuật toán tại trạm sản xuất PS: Vòng lặp Nếu receive(CS) tang(NC’) cho(NC’,NP – N + 1) san_xuat() send(CS) NP = NP + 1 Kết thúc vòng lặp − Thuật toán tại trạm tiêu thụ CS: Vòng lặp Nếu receive(PS)... Báo cáo Tiểu luận: 1 LẬP TRÌNH MẠNG .1 Đề tài: 1 Bài toán: NGƯỜI SẢN XUẤT - NGƯỜI TIÊU THỤ .1 GVHD: PGS.TS Lê Văn Sơn 1 Đà Nẵng, 03-2010 1 Lời mở đầu 2 PhẦn I 3 Cơ sỞ lý thuyẾt LẬp Trình MẠng Phân Tán Và RMI .3 1 Mạng máy tính Phân tán .3 2 Giới thiệu phương thức triệu gọi đối tượng từ xa RMI (Remote... gọi phương thức từ xa 4 2.2 Kiến trúc RMI Java .4 3 Thiết lập môi trường triệu gọi từ xa 7 3.1 Trên máy phục vụ (Server) 7 3.2 Trên máy khách (Client) .8 PhẦn II 9 Bài toán: NGƯỜI SẢN XUẤT – NGƯỜI TIÊU THỤ .9 1 Hướng Giải quyết bài toán 9 2 Chương trình và kết quả demo 12 31 ... send(CS) NP = NP + 1 Kết thúc vòng lặp − Thuật toán tại trạm tiêu thụ CS: Vòng lặp Nếu receive(PS) tang(NP’) cho(NP’,NP + 1) tieu_thu() send(PS) NC = NC + 1 Kết thúc vòng lặp 11 Tiểu luận môn Lập trình mạng nâng cao 2 Chương trình và kết quả demo // Server1.java (chua cac lenh sau) // Server1 dong vai tro la Tram San Xuat // khai bao interface cho Server1 import java.rmi.Remote; import java.rmi.RemoteException;... Server1Impl extends java.rmi.server.UnicastRemoteObject implements Runnable, Server1 { public Server1Impl() throws java.rmi.RemoteException 12 { Tiểu luận môn Lập trình mạng nâng cao java.lang.System.out.println("Starting Server1 "); } static String nameserver2 = null; // Khai báo bien de giu tên cua Server2 static Server2 tramtt; static Thread thr; static int congtosukienSX=0; static Message mesinSX; // +++++... setnumTT(int number) throws java.rmi.RemoteException; public abstract int getnumTT() throws java.rmi.RemoteException; public abstract int gettongTT() throws java.rmi.RemoteException; } 17 Tiểu luận môn Lập trình mạng nâng cao // Server2Impl.java (chua cac lenh sau) // Server2 dong vai tro la Tram Tieu Thu import java.io.*; import java.rmi.*; import java.util.*; public class Server2Impl extends java.rmi.server.UnicastRemoteObject... ctsk) { mesinTT.setcongtosukien(ctsk); } public synchronized int getcongtosukienTT() { return mesinTT.getcongtosukien(); } // voi bien num public synchronized void setnumTT(int number) { 18 Tiểu luận môn Lập trình mạng nâng cao mesinTT.setnum(number); } public synchronized int getnumTT() { return mesinTT.getnum(); } public synchronized int gettongTT() { return mesinTT.gettong(); } //*************************************... "+mesinTT.gettong()); } catch(java.lang.Exception exception) { java.lang.System.out.println(exception.getMessage()); java.lang.System.exit(0); } } //************ public void run(){ try{ 19 Tiểu luận môn Lập trình mạng nâng cao //******* Cai dat thuat toan cho tram SX ****** mesinTT.setcongtosukien(0); mesinTT.setkiemtra(false); mesinTT.setmess("ok"); Util.mySleep(700); while(mesinTT.getkiemtra()==false){ . 8':DˆG‡7;7I:,/I 9, D 89 E59K8/D&— ™ ss 9: ;9: q,KCI‡7;7r5'$7575C9&'G7$t ss 9: ;9: 1>D&*;7/8:DC7:7,7&$78 ss'$5' /9& amp;,KC9 ,9& amp;85'D 9: ;9: 1 /,KD:8‡7;7I/DIš— /,KD:8‡7;7I$8/CIš— /,KD:8‡7;7I:,/Iš— K$2C/55C7GG 9: ;9: 1,KC9E 89& amp;>G‡7;7I:,/IG9: ;9: I &/57G8 9, D 89 2 95 8 /,KC9 ,9& amp;8G$&&72C9h 9: ;9: 1˜ K$2C/5 9: ;9: 1,KCrt . ™ G878/58:/&*&7,9G9: ;9: q–&$CC—ss-'7/2.D2 /9& amp;> ;9 */$8R&5$7 9: ;9: q G878/5 9: ;9: q8:7,88— G878/5' :97 >8':— G878/5/&85D&*8DG$O /9& amp;–“— G878/59GG7 *9 ,9G/&— ssŽŽŽŽŽ K$2C/5GQ&5':D&/ 9& gt;/&8G7&E$78GDrt˜ ss8'$'7,:7&>D, /&8/–“— 8:Q˜ 7&>D,:>–& ;9 7&>D,rt— /–:>I&9E8&8r}“t— QG 89, ID$8IK:/&8C&r›D:7&>D,5$7:7,7&$78*$/C7#–›Ž /t— ™ 5785'r‡7;7IC7&*I‰E59K8/D&9E59K8/D&t˜ ‡7;7IC7&*IQG 89, ID$8IK:/&8C&r9E59K8/D&I *98 9GG7*9rtt— ‡7;7IC7&*IQG 89, I9E/8r“t— ™ :98 $:&/— ™ ssššššššššššššššššššš K$2C/5GQ&5':D&/ 9& gt;;D/>G98,9GGr‡7;7IC7&*I8:/&*,9GG7*9t˜ ,9G/&IG98,9GGr,9GG7*9t— ™ K$2C/5GQ&5':D&/ 9& gt;‡7;7IC7&*I8:/&* *98 ,9GGrt˜ :98 $:&,9G/&I *98 ,9GGrt— ™ ss;D/2 /9& amp;5D&*8DG$O /9& amp; K$2C/5GQ&5':D&/ 9& gt;;D/>G985D&*8DG$O /9& amp;r/&858GOt˜ . ,9G/&IG98&$,r&$, 29: t— ™ K$2C/5GQ&5':D&/ 9& gt;/&8 *98 &$,rt˜ :98 $:&,9G/&I *98 &$,rt— ™ ssŽŽŽŽŽŽ K$2C/5;D/>:$&rt ˜ 8:Q ˜ ssššššššš7/>788'$788D7&5'D8:7,šššššš ,9G/&IG98,9GGr›DO›t— ,9G/&IG985D&*8DG$O /9& amp;r1t— ,9G/&IG98O /9, 8:7r|7CG9t— 8/CI,QC99KrŠ““t— ˆ'/C9r,9G/&I *98 O /9, 8:7rt––|7CG9t˜