baithuchanh_5207
TRANSCRIPT
Bài 1
S L C V NGÔN NG JAVAƠ ƯỢ Ề Ữ- Làm quen v i môi tr ng IDE (Jubuider 9.0).ớ ườ- Cài đ t các ch ng trình ng d ng đ n gi n v ngôn ng java.ặ ươ ứ ụ ơ ả ề ữ
+ Các bài t p v c u trúc đi u khi n.ậ ề ấ ề ể+ Các bài t p v ngo i l .ậ ề ạ ệ+ Các bài t p v l p.ậ ề ớ+ Các bài t p v I/O.ậ ềI. 1. C u trúc đi u khi n.ấ ề ể
I.1.1. Bài t p m u:ậ ẫ// khai báo th vi n nh p xu t d li u.ư ệ ậ ấ ữ ệimport java.io.*;
public class DemSo {
private String s;
// Xây d ng ph ng th c nh p chu i t bàn phímự ươ ứ ậ ỗ ừ public void nhap()
{
try
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Nhap mot chuoi tu ban phim");
s=br.readLine();
}catch(IOException ex)
{}
}
// Xây d ng m t hàm có d li u tr v là double đ đ m t ng các s (0->9) xu t hi nự ộ ữ ệ ả ề ể ế ố ố ấ ệ
trong chu i.ỗ public double xuLy()
{
double dem=0;
for(int i=0;i<s.length();i++)
{
if(kiemTra((int)s.charAt(i))==true)
{
dem++;
}
}
return dem;
}
// Xây d ng hàm có giá tr tr v là true và false đ ki m tra giá tr nh p vào có n mự ị ả ề ể ể ị ậ ằ
trong kho ng s hay không (ký t 0->9 trong b ng mã ASCII có giá tr ki u int là 48ả ố ự ả ị ể
->57).
public boolean kiemTra(int x)
{
if((x>47)&&(x<58))
return true;
else
return false;
}
public void xuLyCT()
{
int dem0=0;
int dem1=0;
int dem2=0;
int dem3=0;
int dem4=0;
int dem5=0;
int dem6=0;
int dem7=0;
int dem8=0;
int dem9=0;
for(int i=0; i<s.length();i++)
{
char c = s.charAt(i);
switch(c)
{
case '0':dem0++; break;
case '1':dem1++; break;
case '2':dem2++; break;
case '3':dem3++; break;
case '4':dem4++; break;
case '5':dem5++; break;
case '6':dem6++; break;
case '7':dem7++; break;
case '8':dem8++; break;
case '9':dem9++; break;
}
}
System.out.println("So lan xuat hien so 0 co trong chuoi la: \t"+ dem0);
System.out.println("So lan xuat hien so 1 co trong chuoi la: \t"+ dem1);
System.out.println("So lan xuat hien so 2 co trong chuoi la: \t"+ dem2);
System.out.println("So lan xuat hien so 3 co trong chuoi la: \t"+ dem3);
System.out.println("So lan xuat hien so 4 co trong chuoi la: \t"+ dem4);
System.out.println("So lan xuat hien so 5 co trong chuoi la: \t"+ dem5);
System.out.println("So lan xuat hien so 6 co trong chuoi la: \t"+ dem6);
System.out.println("So lan xuat hien so 7 co trong chuoi la: \t"+ dem7);
System.out.println("So lan xuat hien so 8 co trong chuoi la: \t"+ dem8);
System.out.println("So lan xuat hien so 9 co trong chuoi la: \t"+ dem9);
}
// Xây d ng hàm main đ th c thi các ph ng th c, hàm có trong l pự ể ự ươ ứ ớ public static void main(String[]args) throws IOException
{
// Bi n dc thu c ki u DemSo đ g i đ n các ph ng th c, thu c tính có trong l p.ế ộ ể ể ọ ế ươ ứ ộ ớ DemSo dc = new DemSo();
dc.nhap();
System.out.println("TONG CAC SO XUAT HIEN TRONG CHUOI LA \t"+
dc.xuLy());
dc.xuLyCT();
}
}
I.1.2. Bài t p:ậCâu 1: Tính t ng s ch n, l .ổ ố ẵ ẻVí d : Khi nh p vào s 6 thì t ng l là 1+3+5=9, T ng ch n là 2+ 4+6=12.ụ ậ ố ổ ẻ ổ ẵCâu 2: In ra 15 s Fibonacci đ u tiên ( Công th c c a Fibonacci fib(0) = 0;fib(1) = 1;ố ầ ứ ủ
fib(n) = fib(n-2) + fib(n-1); n>=2 ).
Câu 3. Nh p vào m t s nguyên (n) sau đó in ra các s nguyên t trong kho ng tậ ộ ố ố ố ả ừ
1=>n.
Câu 4: Nh p đ dài 3 c nh c a m t tam giác. Thông báo tam giác đó là tam giác đ u,ậ ộ ạ ủ ộ ề
vuông cân, cân, hay tam giác th ng.ườ
Câu 5: Cho m t s t nhiên N b t kỳ đ c nh p vào t bàn phím. Tính t ngộ ố ự ấ ượ ậ ừ ổS = 1+ 1/1+2+ 1/1+2+3….+ 1/(1+2+3. . N);
Câu 6: Nh p vào hai chu i s1, s2 sau đó đ m s l n chu i s2 xu t hi n trong chu i s1.ậ ỗ ế ố ầ ỗ ấ ệ ỗCâu 7: Nh p vào ba xâu s1, s2, s3 sau đó thay th t t c các v trí xu t hi n c a s2 trongậ ế ấ ả ị ấ ệ ủ
xâu s1 b ng xâu s3.ằCâu 8: Nh p m t xâu s và ki m tra xâu đó có ph i xâu đ i x ng không?ậ ộ ể ả ố ứCâu 9: Nh p vào m t xâu ký t sau đó chu n hoá xâu này theo quy t c sau:ậ ộ ự ẩ ắ
- Đ u và cu i xâu không đ c ch a d u cáchầ ố ượ ứ ấ- Gi a các t không th có nhi u h n 1 d u cáchữ ừ ể ề ơ ấ- Đ u các t trong xâu ph i là ký t hoa ầ ừ ả ự- Các ký t không ph i là ký đ u tiên c a m t t ph i là ch th ng.ự ả ầ ủ ộ ừ ả ữ ườ
Câu 10: Hãy nh p m ng m t chi u a[] có n ph n t t bàn phímậ ả ộ ề ầ ử ừ
- Xây d ng ph ng th c tính t ng c a m ng.ự ươ ứ ổ ủ ả- Xây d ng ph ng th c tính t ng các giá tr ch n có trong m ng.ự ươ ứ ổ ị ẵ ả- Xây d ng ph ng th c đ m s l n xu t hi n c a x có trong m ng. ự ươ ứ ế ố ầ ấ ệ ủ ả- Xây d ng ph ng th c s p x p các ph n t trong m ng thành dãy tăng d n.ự ươ ứ ắ ế ầ ử ả ầ- Xây d ng ph ng th c hi n các ph n t c a m ng.ự ươ ứ ệ ầ ử ủ ả
Câu 11: Hãy nh p m ng 2 chi u a[n][m] có n s hàng, m s c t t bàn phím.ậ ả ề ố ố ộ ừ- Xây d ng ph ng th c tính t ng c a m ng.ự ươ ứ ổ ủ ả- Xây d ng ph ng th c tính t ng các hàng, các c t.ự ươ ứ ổ ộ- Xây d ng ph ng th c tính t ng đ ng chéo chính, đ ng chéo ph .ự ươ ứ ổ ườ ườ ụ- Xây d ng ph ng th c hi n các ph n t m ng theo ma tr n.ự ươ ứ ệ ầ ử ả ậ
I.2. X lý ngo i l :ử ạ ệI.2. 1 Bài t p m u:ậ ẫ Tính t ng 2 s a, b đ c nh p t bàn phím. Yêu c u x lý các ngo i l có th x yổ ố ượ ậ ừ ầ ử ạ ệ ể ả
ra.
// Tri n khai th vi n nh p xu tể ư ệ ậ ấimport java.io.*;
// T o l p tính t ngạ ớ ổpublic class TinhTong
{
public static void main(String[]args)
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
float a=0, b=0, tong;
try
{
System.out.println(" Ban hay nhap gia tri cua a ");
a = Float.parseFloat(br.readLine());
System.out.println(" Ban hay nhap gia tri cua b ");
b=Float.parseFloat(br.readLine());
// B t ngo i l trong quá trình nh p d li u t bàn phímắ ạ ệ ậ ữ ệ ừ }catch(IOException ex)
// In ra màn hình thông tin b l i trong quá trình nh pị ỗ ậ
{
System.out.println( ex.getMessage());
}
// B t ngo i l khi không th chuy n ki u chu i thành ki u sắ ạ ệ ể ể ể ỗ ể ố catch(NumberFormatException nfe)
// In ra màn hình thông tin b l i trong quá trình chuy n ki uị ỗ ể ể {
System.out.println( nfe.getMessage());
}
tong =a+b;
System.out.println( a + " + "+ b +":= \t"+ tong);
}
}
I.2.2. Bài t p:ậCâu 1: Vi t ch ng trình cho phép tính giá tr c a bi u th c:ế ươ ị ủ ể ứ
A =
Yêu c u x lý các ngo i l có th x y ra.ầ ử ạ ệ ể ảCâu 2: Vi t ch ng trình cho phép t o m t m ng 2 chi u c mxn v i m,n nh p t bànế ươ ạ ộ ả ề ỡ ớ ậ ừ
phím. Xây d ng ph ng th c hi n th d li u trong m ng. Cài đ t các x lý ngo i lự ươ ứ ệ ị ữ ệ ả ặ ử ạ ệ
c n thi t.ầ ếI. 3. H ng đ i t ng:ướ ố ượI.3.1. Bài t p m u:ậ ẫ// Khai báo th vi n nh p xu t d li u.ư ệ ậ ấ ữ ệimport java.io.*;
// Khai báo th vi n collection đ t p h p đ i t ng (ArrayList, List, Date. . .)ư ệ ể ậ ợ ố ượimport java.util.*;
// Xây d ng m t l p SinhVienự ộ ớpublic class SinhVien {
// Khai báo các thu c tính c a l p (maSV, tenSV).ộ ủ ớ
private String maSV;
private String tenSV;
//bi n ds thu c ki u d li u ArrayList đ t p h p các đ i t ng SinhVien đ t o thànhế ộ ể ữ ệ ể ậ ợ ố ượ ể ạ
m t danh sách (bi n ds có th thêm ho c xóa m t đ i t ng trong nó)ộ ế ể ặ ộ ố ượ ArrayList ds = new ArrayList();
// Xây d ng ph ng th c kh i t o không có đ i s .ự ươ ứ ở ạ ố ố public SinhVien()
{ }
// Xây d ng ph ng th c kh i t o có đ i s truy n vàoự ươ ứ ở ạ ố ố ề public SinhVien(String maSV, String tenSV)
{
this.maSV=maSV;
this.tenSV=tenSV;
}
// Xây d ng ph ng th c đ nh p n sinh viên vào trong ds.ự ươ ứ ể ậpublic void nhap()
{
try
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Nhap so sinh vien");
int n = Integer.parseInt(br.readLine());
for(int i=0;i<n; i++)
{
System.out.println("Nhap maSV "+ i);
maSV=br.readLine();
System.out.println("Nhap tenSV "+ i);
tenSV=br.readLine();
SinhVien sv = new SinhVien(maSV,tenSV);
ds.add(sv);
}
}catch(IOException ex)
{}
catch(NullPointerException npe)
{}
}
// Xây d ng ph ng th c hi n thông tin c a sinh viên có trong ds.ự ươ ứ ệ ủ public void hien()
{
System.out.println("STT \t"+ "MA SINH VIEN \t"+ " TEN SINH VIEN \t");
for(int i=0; i<ds.size();i++)
{
SinhVien sv =(SinhVien)ds.get(i);
System.out.println(i+ " \t"+ sv.maSV+ " \t\t "+ sv.tenSV);
}
}
// Xây d ng ph ng th c tìm m t sinh viên có trong danh sách sinh viên hay khôngự ươ ứ ộ public void tim(String s)
{
boolean kt=false;
for(int i=0; i<ds.size(); i++)
{
SinhVien sv = (SinhVien)ds.get(i);
sv.tenSV=sv.tenSV.trim();
String ten=sv.tenSV.substring(sv.tenSV.length()-s.length());
if(s.equals(ten))
{
System.out.println("SINH VIEN "+ s + " CO TRONG DANH SACH VA CO MA SO
\t"+ sv.maSV);
kt=true;
}
}
if(kt==false)
{
System.out.println("SINH VIEN "+ s + " KHONG CO TRONG DANH SACH");
}
}
// Xây d ng ph ng th c main đ th c thi các ph ng th c có trong l pự ươ ứ ể ự ươ ứ ớ public static void main(String[]args)
{
SinhVien sv = new SinhVien();
sv.nhap();
sv.hien();
String s ="Bien";
sv.tim(s);
}
I.3.2. Bài t pậCâu 1
a) Xây d ng l p ự ớ Stack đ mô ph ng m t Stack (gi thi t m i ph n t c a stackể ỏ ộ ả ế ỗ ầ ử ủ
là m t s nguyên), bao g m:ộ ố ồ- Hàm t o Stack(int n) đ kh i t o Stack có t i đa n ph n tạ ể ở ạ ố ầ ử- Ph ng th c isEmpty đ ki m tra xem Stack có ph n t nào hay không?ươ ứ ể ể ầ ử- Ph ng th c isFull đ ki m tra xem Stack đã đ y hay ch a?ươ ứ ể ể ầ ư- Ph ng th c push đ thêm m t ph n t vào Stackươ ứ ể ộ ầ ử- Ph ng th c pop đ l y m t ph n t ra kh i Stackươ ứ ể ấ ộ ầ ử ỏ
b) Vi t m t đo n ch ng trình đ ki m tra l p Stack v a t o b ng cách:ế ộ ạ ươ ể ể ớ ừ ạ ằ- T o ra m t Stack có s ph n t t i đa là 5ạ ộ ố ầ ử ố- Tr c khi đ a các ph n t vào Stack, hãy ki m tra xem Stack có đang r ng, đ y hayướ ư ầ ử ể ỗ ầ
không?
- Đ a ph n t 5 vào ngăn x p, sau đó ki m tra xem ngăn x p có đ y, r ng hay không?ư ầ ử ế ể ế ầ ỗ- Đ a ti p các ph n t 1, 6, 8, 9 vào ngăn x p, sau đó l i ki m tra l i xem ngăn x pư ế ầ ử ế ạ ể ạ ế
đ y, r ng hay không?ầ ỗCâu 2:
S d ng l p Stack đ c vi t trong Bài 1 đ vi t ch ng trình chuy n m t s tử ụ ớ ượ ế ể ế ươ ể ộ ố ừ
h c s 10 sang h c s : 2, 8, 16, m t c s b t kỳ b ng cách s d ng phép toán chiaệ ơ ố ệ ơ ố ộ ơ ố ấ ằ ử ụ
liên ti p.ếBài 3:
Xây d ng l p PhanSo đ th c hi n các phép toán trên phân s , bao g m:ự ớ ể ự ệ ố ồ- Hàm t o PhanSo() đ kh i t o phân s có t s b ng 0 và m u s b ng 1.ạ ể ở ạ ố ử ố ằ ẫ ố ằ- Hàm t o PhanSo(int ts, int ms) đ kh i t o phân s có t s b ng ts và m u s b ngạ ể ở ạ ố ử ố ằ ẫ ố ằ
ms.
- Ph ng th c “cong”, “tru”, “nhan”, “chia” đ th c hi n vi c c ng , tr , nhân, chia haiươ ứ ể ự ệ ệ ộ ừ
phân s .ố- Ph ng th c “nghichDao”, “doiDau”, “toiGian” đ th c hi n vi c ngh ch đ o, đ iươ ứ ể ự ệ ệ ị ả ổ
d u và t i gi n m t phân s .ấ ố ả ộ ố- Ph ng th c “soSanhBang”, “lonHon”, “nhoHon”… đ th c hi n vi c so sánh haiươ ứ ể ự ệ ệ
phân s .ố- Ph ng th c “nhap” dùng đ nh p phân s t bàn phím.ươ ứ ể ậ ố ừI.4. Các bài t p v I/O.ậ ềI.4.1. Bài t p m u:ậ ẫCâu 1: Hãy sao chép file E:\\bien.txt sang D:\\bien.txt.
\\ Khai báo th vi n nh p xu t.ư ệ ậ ấimport java.io.*;
// Xây d ng l p CopyFileự ớpublic class CopyFile
{
// Xây d ng ph ng th c xuLy() đ th c hi n đ c và ghi file s d ng lu ng byte làự ươ ứ ể ự ệ ọ ử ụ ồ
(FileInputStream, FileOuputStream)
public static void xuLy() throws IOException
{
FileInputStream fis;
FileOutputStream fos;
try
{
// bi n fis s đ c file bien.txt có trong Eế ẽ ọ ổ fis = new FileInputStream("E:\\bien.txt");
// bi n fos s t o ra file bien.txt D đ l u d li u đ c đ c file bien.txt E.ế ẽ ạ ở ổ ể ư ữ ệ ọ ượ ở ở ổ fos = new FileOutputStream("D:\\bien.txt");
int x;
// Đ c d li u trong fis cho đ n =-1 hay h t file.ọ ữ ệ ế ế while ( (x = fis.read()) != -1)
{
// fos ghi t ng byte d li u nh n đ c vào file bien.txt trong D.ừ ữ ệ ậ ượ ổ fos.write(x);
fos.flush();
}
System.out.println("Sao chep file thanh cong");
// Đóng lu ng ồ fos.close();
fis.close();
}catch(FileNotFoundException fnfe)
{}
}
// Xây d ng ph ng th c main đ g i đ n ph ng th c sao chép file.ự ươ ứ ể ọ ế ươ ứpublic static void main(String[]args) throws IOException
{
xuLy();
}
}
Câu 2: Hãy nh p 3 s nguyên t bàn phím vào trong t p tin Tong.txt. Đ c 3 s t t p tinậ ố ừ ệ ọ ố ừ ệ
Tong.txt và tình t ng c a 3 s đó r i ghi k t qu vào dòng ti p theo trong t p tin.ổ ủ ố ồ ế ả ế ệ// Khai báo th vi n nh p xu t ư ệ ậ ấimport java.io.*;
// Xây d ng l p Tongự ớpublic class Tong {
// Xây d ng ph ng th c main đ th c thi các ph ng th c trong l p Tongự ươ ứ ể ự ươ ứ ớ public static void main(String[]args)throws IOException, FileNotFoundException
{
tinhTong();
}
// Xây d ng ph ng th c tinhTong() đ ghi và đ c d li u ự ươ ứ ể ọ ữ ệ public static void tinhTong()throws IOException, FileNotFoundException
{
\\ Bi n pw thu c ki u d li u PrintWriter đ ghi d li u dùng lu ng ký t .ế ộ ể ữ ệ ể ữ ệ ồ ự PrintWriter pw = new PrintWriter(new FileOutputStream("D:\\Tong.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
for (int i = 0; i < 3; i++) {
System.out.println("So thu " + i);
int n = Integer.parseInt(br.readLine());
pw.print(n);
pw.print(" ");
pw.flush();
}
// Bi n dis thu c ki u d li u DataInputStream đ c lu ng d li u nh phân (M t sế ộ ể ữ ệ ọ ồ ữ ệ ị ộ ố
ki u d li u nguyên th y nh int, float, long . .) ể ữ ệ ủ ư DataInputStream dis = new DataInputStream(new FileInputStream(
"D:\\dayso2.txt"));
char[] c = new char[dis.available()];
int x;
int i = 0;
int tong = 0;
while ( (x = dis.read()) != -1)
{
c[i] = (char) x;
i++;
}
String s = new String(c);
String[] s1 = s.split(" ");
for(int j=0;j<s1.length;j++)
{
tong+=Integer.parseInt(s1[j]);
}
pw.println();
pw.println(tong);
pw.flush();
}
}
I.4.2. Bài t pậCâu 1: Nh p vào m t dãy s , ghi d y s này ra t p “dayso.dat”. Đ c l i d y s này tậ ộ ố ẫ ố ệ ọ ạ ẫ ố ừ
t p đ tìm t t c các s nguyên t trong d y này và ghi ra t p “daynn.dat”ệ ể ấ ả ố ố ẫ ệCâu 2: Cho m t t p văn b n có kích th c nh , vi t ch ng trình ki m tra xem trongộ ệ ả ướ ỏ ế ươ ể
t p này có ch a xâu s (cho tr c) hay không?ệ ứ ướ+ Nh p vào m t dãy s . ghi d y s này ra t p tin, sau đó tách t p này thành hai t p,ậ ộ ố ẫ ố ệ ệ ệ
m t t p ch a toàn các ph n t ch n, t p còn l i ch a toàn các ph n t l .ộ ệ ứ ầ ử ẵ ệ ạ ứ ầ ử ẻCâu 3: Tìm các s Fibonaci nh h n m t s n (cho tr c)ố ỏ ơ ộ ố ướ
+ Ghi các s tìm đ c ra t p theo đ nh d ng nh sau:ố ượ ệ ị ạ ư- Hàng đ u tiên c a t p ghi s n ầ ủ ệ ố- Hàng th 2 c a t p l n l t ghi s tìm đ c, các s này đ c cách nhau b iứ ủ ệ ầ ượ ố ượ ố ượ ỏ
m t d u cáchộ ấCâu 4:
+ Ghi ma tr n này ra t p mt.dat theo quy t c sau:ậ ệ ắ- Hàng đ u tiên c a t p ghi s hàng c a ma tr nầ ủ ệ ố ủ ậ- Hàng th 2 c a t p ghi s c t c a ma tr nứ ủ ệ ố ộ ủ ậ- Các hàng ti p theo m i hàng ghi m t hàng t ng c a ma tr nế ỗ ộ ươ ủ ậ+ Đ c l i ma tr n này t t p mt.datọ ạ ậ ừ ệ
I.5. Các bài t p v lu ng (Thread).ậ ề ồI.5.1 Bài t p m u:ậ ẫ
II. PIPEII.1.Bài t p m u.ậ ẫCâu 1: Xây d ng ng d ng PipedEcho.ự ứ ụ
- S d ng Pipe làm ph ng ti n giao ti p gi a Client và Server.ử ụ ươ ệ ế ữ- Server là m t thread th c thi song song v i client.ộ ự ớ- Nh p các ký t t bàn phím và g i cho Server và hi n th k t qu nh n đ c raậ ự ừ ở ệ ị ế ả ậ ượ
màn hình.
- Server nh n đ c ký t và tăng m i ký t lên 1 đ n v r i g i v cho Client.ậ ượ ự ỗ ự ơ ị ồ ở ề* Ch ng trình Server.ươ// Khai báo th vi n nh p xu t d li u.ư ệ ậ ấ ữ ệ import java.io.*;
// Xây d ng l p PipedEchoServer k th a các ph ng th c và thu c tính c a l pự ớ ế ừ ươ ứ ộ ủ ớ
Thread
public class PipedEchoServer extends Thread
{
//Bi n readPipe thu c ki u d li u c a PipedInputStream dùng đ đ c d li u trên ngế ộ ể ữ ệ ủ ể ọ ữ ệ ố
d n, writePipe thu c ki u d li u c a PipedOutputStream dùng đ ghi d li u lên ngẫ ộ ể ữ ệ ủ ể ữ ệ ố
d nẫ PipedInputStream readPipe;
PipedOutputStream writePipe;
// Xây d ng ph ng th c kh i t o c a l p có hai đ i s và trong đó có g i đ n ph ngự ươ ứ ở ạ ủ ớ ố ố ọ ế ươ
th c start đ ch y lu ng m i khi m t đ i t ng c a l p đ c t o ra.ứ ể ạ ồ ỗ ộ ố ượ ủ ớ ượ ạ PipedEchoServer(PipedInputStream readPipe, PipedOutputStream writePipe)
{ this.readPipe = readPipe;
this.writePipe = writePipe;
System.out.println("Server bat đau lăng nghe. . .");
start();
}
// Xây d ng Ph ng th c ghi đè run() đ nh n, x lý d li u đ g i l i cho Client.ự ươ ứ ể ậ ử ữ ệ ể ử ạ public void run()
{
while(true)
{ try
{
int ch = readPipe.read()+ 1;
writePipe.write(ch);
writePipe.flush();
} catch (IOException ie)
{ System.out.println("Echo Server bi loi: "+ie );
}
}
}
}
* Ch ng trình Client:ươ// Khai báo th vi n nh p xu t d li u.ư ệ ậ ấ ữ ệimport java.io.*
// Xây d ng l p PipedEchoClient k th a các ph ng th c và thu c tính c a l p Threadự ớ ế ừ ươ ứ ộ ủ ớpublic class PipedEchoClient extends Thread
{
PipedInputStream readPipe;
PipedOutputStream writePipe;
PipedEchoClient(PipedInputStream readPipe, PipedOutputStream writePipe)
{
this.readPipe = readPipe;
this.writePipe = writePipe;
System.out.println("Client dang ket noi");
start(); }
// Xây d ng ph ng th c ghi đè run() đ g i và đ c k t qu lên màn hình.ự ươ ứ ể ử ọ ế ả public void run()
{
while(true)
{ try
{
int ch=System.in.read();
writePipe.write(ch);
ch = readPipe.read();
System.out.print((char)ch);
} catch(IOException ie)
{ System.out.println("Echo Client Error: "+ie );
}
}
}
}
* Ch ng trình PipedEchoươ .
// Khai báo th vi n nh p xu tư ệ ậ ấimport java.io.*;
public class PipedEcho
{
// Xây d ng ph ng th c main đ th c thi ng d ng PipedEcho là t o ra 2 ng d nự ươ ứ ể ự ứ ụ ạ ố ẫ
giúp Client và Server có th trao đ i thông tin v i nhau.ể ổ ớ public static void main(String args[])
{
try{
PipedOutputStream cwPipe = new PipedOutputStream();
PipedInputStream crPipe = new PipedInputStream();
PipedOutputStream swPipe = new PipedOutputStream(crPipe);
PipedInputStream srPipe = new PipedInputStream(cwPipe);
PipedEchoServer server = new PipedEchoServer(srPipe,swPipe);
PipedEchoClient client = new PipedEchoClient(crPipe,cwPipe);
} catch(IOException ie)
{ System.out.println("Pipe Echo Error:"+ie); }
}
}
// K t quế ảKhi ch y PipedEchoạ
Server bat đau lăng nghe. . .
Client dang ket noi
123qw
234rx
II.2. Bài t pậCâu 1: Hãy xây d ng m t ch ng trình ghi m t m ng byte cho tr c lên ng d n Pipe.ự ộ ươ ộ ả ướ ố ẫ
Đ c d li u t ng d n r i hi n th k t qu ra màn hình.ọ ữ ệ ừ ố ẫ ồ ệ ị ế ảCâu 2: Hãy xây d ng m t ng d ng cho d ch v ph n h i thông tin b ng ng d nự ộ ứ ụ ị ụ ả ồ ằ ố ẫ
(Pipe) theo mô hình Client-Server theo yêu c u sau:ầ- Client nh p m t m ng ký t t bàn phím r i g i đ n Server, đ i nh n k t quậ ộ ả ự ừ ồ ử ế ợ ậ ế ả
tr v và in ra màn hình.ả ề- Server s nh n d li u t Client g i sang, ki m tra ký t đó n u là ký t s sẽ ậ ữ ệ ừ ử ể ự ế ự ố ẽ
g i tr v cho Client.ử ả ề
III. SOCKETIII.1. Bài t p m u.ậ ẫIII.1. 1.L p trình TCPậIII.1.1.1.Xây d ng ch đ ph c v tu n t .ự ế ộ ụ ụ ầ ựCâu 1: Vi t ch ng trình theo mô hình Client-Server s d ng Socket ch đ n iế ươ ử ụ ở ế ộ ố
k t(TCP)ếa) Ch ng trình phía Server.ươ
- L ng nghe và ch p nh n k t n i t i c ng 1234ắ ấ ậ ế ố ạ ổ- Khi nh n m t chu i t Client s chuy n chu i đó thành ch hoa và g i k t qu tr l iậ ộ ỗ ừ ẽ ể ỗ ữ ử ế ả ả ạ
cho Client.
- Đóng k t n iế ốb) Ch ng trình phía máy khách.ươ
- K t n i đ n Server có c ng k t n i 1234.ế ố ế ổ ế ố- Đ c chu i t bàn phím r i g i đ n Server ch và nh n k t qu hi n th ra màn hìnhọ ỗ ừ ồ ở ế ờ ậ ế ả ệ ị- Đóng k t n i.ế ố* Trình t ho t đ ng c a máy ch (Server) :ự ạ ộ ủ ủimport java.io.*;
// Khai báo th vi n cho l p m ngư ệ ớ ạimport java.net.*;
public class TCPServer
{
public static void main(String[]args)
{
try
{
// Bi n sv thu c ki u d li u ServerSocket đang l ng nghe t i c ng 1234ế ộ ể ữ ệ ắ ạ ổ ServerSocket sv = new ServerSocket(1234);
// sv ch p nh n k t n iấ ậ ế ố Socket client = sv.accept();
// br dùng đ đ c d li u trên socketể ọ ữ ệ BufferedReader br = new BufferedReader(new
InputStreamReader(client.getInputStream()));
// pw ghi d li u lên socketữ ệ PrintWriter pw = new PrintWriter(client.getOutputStream());
String s1 = br.readLine();
s1=chuHoa(s1);
pw.write(s1+ "\n");
pw.flush();
pw.close();
br.close();
client.close();
sv.close();
}catch(IOException ex) {}
}
// Hàm chuy n đ i chu i thành chu i hoaể ổ ỗ ỗ public static String chuHoa(String s)
{
s=s.toUpperCase();
return s;
}
}
* Trình t ho t đ ng c a máy kháchự ạ ộ ủ (Client) :
import java.io.*;
import java.net.*;
public class TCPClient {
public static void main(String[]args)
{
try
{
// Client k t n i đ n Server có đ a ch IP “127.0.0.1”, c ng 1234.ế ố ế ị ỉ ổ Socket client = new Socket("127.0.0.1",1234);
BufferedReader br = new BufferedReader(new
InputStreamReader(client.getInputStream()));
BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in));
PrintWriter pw = new PrintWriter(client.getOutputStream());
System.out.println("Ban hay nhap mot chuoi vao");
String s;
// G i chu i đ n Serverử ỗ ế while((s=br1.readLine())!="1")
{
pw.write(s + "\n");
pw.flush();
if(s=="1")break;
}
System.out.println("chuoi nhan ve la");
String s1 = br.readLine();
System.out.println(s1);
br.close();
pw.close();
client.close();
}catch(IOException ex)
{}
}
}
III.1.1.2. Xây d ng Server ch đ ph c v song song (m t ngu n nhi u khách).ự ế ộ ụ ụ ộ ồ ềCâu 1
a) Ch ng trình phía máy chươ ủ- L ng nghe và ch p nh n các k t n i đ n trên c ng 9999ắ ấ ậ ế ố ế ổ- T o ra m i tuy n cho m t k t n i riêng bi t đ đáp ng các yêu c u c a cácạ ỗ ế ộ ế ố ệ ể ứ ầ ủ
máy khách đ ng th iồ ờ- Khi nh n đ c m t dòng do máy khách g i đ n máy ch s x lý nh sau:ậ ượ ộ ử ế ủ ẽ ử ư
+ N u dòng nh n đ c là “quit” (không phân bi t ch hoa ch th ng) máy chế ậ ượ ệ ữ ữ ườ ủ
s đóng k t n i v i máy kháchẽ ế ố ớ+ N u dòng nh n đ c m t chu i s chuy n chu i v ch hoa sau đó tr v choế ậ ượ ộ ỗ ẽ ể ỗ ề ữ ả ề
Client.
b) Ch ng trình phía máy kháchươ- K t n i đ n ch ng trình máy ch đã nêu trong câu aế ố ế ươ ủ- Đ c m t dòng t bàn phím và g i dòng đ c đ c đ n máy chọ ộ ừ ử ọ ượ ế ủ- N u dòng đ c đ c là “quit” (không phân bi t ch hoa ch th ng) thì ng t k tế ọ ượ ệ ữ ữ ườ ắ ế
n i v i máy ch và k t thúc ch ng trìnhố ớ ủ ế ươ- Đ c k t qu tr v và in ra màn hìnhọ ế ả ả ề
* Trình t ho t đ ng c a Server:ự ạ ộ ủ// khai báo th vi n nh p xu tư ệ ậ ấimport java.io.*;
// Khai báo th vi n cho các l p m ngư ệ ớ ạimport java.net.*;
// Xây d ng l p TCPServerự ớ// Ph n 1 l ng nghe t i c ng 9999, khi có client k t n i thì nó s t o ra m t lu ng m iầ ắ ạ ổ ế ố ẽ ạ ộ ồ ớ
đ x lý yêu c u c a Client.ể ử ầ ủpublic class TCPServer
{
public static void main(String[]args)
{
try
{
System.out.println("Server lang nghe ket noi tai cong 9999");
ServerSocket svsk = new ServerSocket(9999);
// N u quá trình l ng nghe t i c ng 9999 c a Server là đúng thì l p l i công vi c ế ắ ạ ổ ủ ặ ạ ệCh p nh n k t n i c a client và t o ra lu ng m i đ x lý thông đi p mà client g iấ ậ ế ố ủ ạ ồ ớ ể ử ệ ở
đ n.ế while(true)
{
Socket sk1 = svsk.accept();
MyThread mt = new MyThread(sk1);
}
}catch(IOException ex)
{}
}
}
// Xây d ng l p MyThread k th a t l p Thread đ nh n và x lý thông đi p t Clientự ớ ế ừ ừ ớ ể ậ ử ệ ừclass MyThread extends Thread
{
Socket sk;
public MyThread(Socket sk)
{
this.sk=sk;
this.start();
}
public void run()
{
try
{
BufferedReader br = new BufferedReader(new InputStreamReader(sk.getInputStream()));
PrintWriter pw = new PrintWriter(sk.getOutputStream());
// L p l i quá trình nh n thông tin và x lý thông tin đ g i tr l i cho Client.ặ ạ ậ ử ể ở ả ạ while(true)
{ String s = br.readLine();
String s1 = s.toUpperCase();
if(s.equals("quit"))break;
else
{
pw.println(s1);
pw.flush();
}
}
// Đóng k t n iế ố br.close();
pw.close();
sk.close();
* Trình t ho t đ ng c a Client.ự ạ ộ ủimport java.io.*;
import java.net.*;
public class TCPClient
{
public static void main(String[] args)
{
try
{
// bi n sk thu c ki u d li u ki u Socket đ t o k t n i đ n máy ch t i c ng 9999ế ộ ể ữ ệ ể ể ạ ế ố ế ủ ạ ổ Socket sk = new Socket("127.0.0.1",9999);
// bi n br thu c ki u d li u BufferedReader đ đ c d li u trên socketế ộ ể ữ ệ ể ọ ữ ệ BufferedReader br = new BufferedReader(new
InputStreamReader(sk.getInputStream()));
BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in));
// bi n pw thu c ki u d li u PrintWriter đ ghi d li u lên socketế ộ ể ữ ệ ể ữ ệ PrintWriter pw = new PrintWriter(sk.getOutputStream());
// L p l i quá trình nh p chu i đ g i cho Server n u chu i nh p vào là “quit” s thoátặ ạ ậ ỗ ể ở ế ỗ ậ ẽ
kh i quá trình nh p ng c l i s in k t qu ra màn hìnhỏ ậ ượ ạ ẽ ế ả while(true)
{
System.out.println("ban hay nhap mot chuoi vao");
String s = br1.readLine();
pw.println(s);
pw.flush();
if(s.equals("quit"))break;
else
System.out.println("chuoi nhan ve tu Server la" + br.readLine());
}
// Client đóng k t n iế ố br.close();
pw.close();
sk.close();
}catch(IOException ex)
{}
}
}
III.1.2. L p trình v i UDP.ậ ớBài T p 1 : Vi t ch ng trình k t n i Client – Server. Sau đó g i các 1 thông đi p tậ ế ươ ế ố ử ệ ừ
máy khách đ n máy ch . Máy ch hi n th ra [ IP Address – Port – Thông đi p ] t máyế ủ ủ ể ị ệ ừ
khách g i đ n?ử ế* Trình t ho t đ ng c a UDPServerự ạ ộ ủ .
import java.io.*;
import java.net.*;
class UDPServer
{
public static void main(String[] args) throws Exception
{
byte []buffer = new byte[1024];
int port = 2812;
try
{
// T o ra m t socket c a UDP đang l ng nghe k t n i c ng port.ạ ộ ủ ắ ế ố ở ổDatagramSocket socket = new DatagramSocket(port);
// Bi n packet thu c ki u d li u DatagramPacket đ đóng gói d li u đ c ch a trongế ộ ể ữ ệ ể ữ ệ ượ ứ
buffer có đ dài buffer.length.ộDatagramPacket packet = new DatagramPacket(buffer,buffer.length);
// Nh n gói d li u vậ ữ ệ ềsocket.receive(packet);
// L y đ a ch IP c a Client.ấ ị ỉ ủInetAddress ipClient = packet.getAddress();
// L y s hi u c ng c a Clientấ ố ệ ổ ủint portClient = packet.getPort();
// Chuy n d li u nh n v thành ki u chu iể ữ ệ ậ ề ể ỗString st = new String(packet.getData(),0,packet.getLength());
// Hi n th chu i nh n v t client và đ a ch ip c a client.ệ ị ỗ ậ ề ừ ị ỉ ủSystem.out.println("receive : '" + st + "' from " + ipClient);
packet.setLength(buffer.length);
}catch (UnknownHostException evt)
{evt.printStackTrace();}
}
}
* Trình t ho t đ ng c a UDPClient.ự ạ ộ ủimport java.io.*;
import java.net.*;
class UDPClient
{
public static void main(String[] args) throws Exception
{
BufferedReader in = new BufferedReader(new
InputStreamReader(System.in));
// T o ra m t s UDPSocket đ k t n i đ n Serverạ ộ ể ế ố ếDatagramSocket socket = new DatagramSocket();
//L y đ a ch ip c a máy ch (“localhost”)ấ ị ỉ ủ ủInetAddress ipServer = InetAddress.getByName("localhost");
int port = 2812;
byte []sendData;
System.out.print("\nNhap chuoi bat ky : ");
String st=in.readLine();
sendData = st.getBytes();
// sendPacket đ đóng gói d li u v i các tham s truy n vào m ng byteể ữ ệ ớ ố ề ả
(sendData), s l ng byte(sendData.length), đ a ch ip c a Server, S c ng c aố ượ ị ỉ ủ ố ổ ủ
Server c n k t n i đ n(port).ầ ế ố ếDatagramPacket sendPacket = new
DatagramPacket(sendData,sendData.length,ipServer,port);
// G i d li u đ n Serverử ữ ệ ếsocket.send(sendPacket);
// Đóng k t n iế ốsocket.close();
}
}
III.2. Bài t p:ậCâu 1:
a) Ch ng trình phía máy ch :ươ ủ- L ng nghe và ch p nh n k t n i trên c ng 1234ắ ấ ậ ế ố ổ- Khi nh n đ c m t dòng do máy khách g i đ n máy ch s x lý nh sau:ậ ượ ộ ử ế ủ ẽ ử ư
+ N u dòng nh n đ c ế ậ ượ “OP DS1 DS2” (Trong đó “OP” là m t phép toán s h cộ ố ọ
có th là: “+”, “-”, “*”, “/”. DS1, DS2 là đ i s c a phép toán. Các thành ph n cáchể ố ố ủ ầ
nhau b i m t d u cách) Server s th c hi n phép toán ở ộ ấ ẽ ự ệ DS1 OP DS2 r i g i k t quồ ử ế ả
tr v Client.ả ề
+ N u dòng nh n đ c là “quit” (không phân bi t là ch hoa hay ch th ng)ế ậ ượ ệ ữ ữ ườ
máy ch s đóng k t n i.ủ ẽ ế ố+ N u dòng thông đi p nh n đ c không ph i là các tr ng h p trên thì máyế ệ ậ ượ ả ườ ợ
ch s g i v m t dòng thông báo “Unkown command”ủ ẽ ử ề ộb) ch phía máy khách:
- K t n i ð n máy ch t i c ng 1234.ế ố ế ủ ạ ổ- Ð c m t dòng t bàn phím và g i ð n cho Server.ọ ộ ừ ử ế- N u dòng đ c đ c là “quit” (không phân bi t là ch hoa hay ch th ng) Client sế ọ ượ ệ ữ ữ ườ ẽ
đóng k t n i.ế ố- Đ c k t qu tr v và in ra màn hìnhọ ế ả ả ề
Câu 2:
a) Ch ng trình phía máy chươ ủ- L ng nghe và ch p nh n các k t n i đ n trên c ng 9999ắ ấ ậ ế ố ế ổ- T o ra m i tuy n cho m t k t n i riêng bi t đ đáp ng các yêu c u c a các máyạ ỗ ế ộ ế ố ệ ể ứ ầ ủ
khách đ ng th iồ ờ- Khi nh n đ c m t dòng do máy khách g i đ n máy ch s x lý nh sau:ậ ượ ộ ử ế ủ ẽ ử ư
+ N u dòng nh n đ c là “GetTime” (không phân bi t ch hoa ch th ng) máyế ậ ượ ệ ữ ữ ườ
ch s l y v gi hi n t i c a máy và g i v máy kháchủ ẽ ấ ề ờ ệ ạ ủ ử ề+ N u dòng nh n đ c là “GetDate” (không phân bi t ch hoa ch th ng) máyế ậ ượ ệ ữ ữ ườ
ch s l y v ngày hi n t i c a máy và g i v máy kháchủ ẽ ấ ề ệ ạ ủ ử ề+ N u dòng nh n đ c là “quit” (không phân bi t ch hoa ch th ng) máy ch ế ậ ượ ệ ữ ữ ườ ủs đóng k t n i v i máy kháchẽ ế ố ớ+ N u dòng thông đi p nh n đ c không ph i là các tr ng h p trên thì máy chế ệ ậ ượ ả ườ ợ ủ
s g i v m t dòng thông báo “Unkown command”ẽ ử ề ộb) Ch ng trình phía máy kháchươ
- K t n i đ n ch ng trình máy ch đã nêu trong câu aế ố ế ươ ủ- Đ c m t dòng t bàn phím và g i dòng đ c đ c đ n máy chọ ộ ừ ử ọ ượ ế ủ- N u dòng đ c đ c là “quit” (không phân bi t ch hoa ch th ng) thì ng t k tế ọ ượ ệ ữ ữ ườ ắ ế
n i v i máy ch và k t thúc ch ng trìnhố ớ ủ ế ươ- Đ c k t qu tr v và in ra màn hìnhọ ế ả ả ề
Câu 3. Vi t ch ng trình v i yêu c u sau:ế ươ ớ ầa) Ch ng trình phía máy chươ ủ
- L ng nghe và ch p nh n các k t n i đ n trên c ng 9999ắ ấ ậ ế ố ế ổ- T o ra m i tuy n cho m t k t n i riêng bi t đ đáp ng các yêu c u c a cácạ ỗ ế ộ ế ố ệ ể ứ ầ ủ
máy khách đ ng th iồ ờ- Khi nh n đ c m t dòng do máy khách g i đ n máy ch s x lý nh sau:ậ ượ ộ ử ế ủ ẽ ử ư
+ N u dòng nh n đ c là “GetLength” (không phân bi t ch hoa ch th ng)ế ậ ượ ệ ữ ữ ườ
máy ch s đ c ti p m t dòng và đ n xen dòng thông đi p đó g m có bao nhiêuủ ẽ ọ ế ộ ế ệ ồ
t và tr v cho máy kháchừ ả ề
+ N u dòng nh n đ c là “quit” (không phân bi t ch hoa ch th ng) máy chế ậ ượ ệ ữ ữ ườ ủ
s đóng k t n i v i máy kháchẽ ế ố ớ+ N u dòng thông đi p nh n đ c không ph i là các tr ng h p trên thì máy chế ệ ậ ượ ả ườ ợ ủ
s g i v m t dòng thông báo “Unkown command”ẽ ử ề ộ
b) Ch ng trình phía máy kháchươ- K t n i đ n ch ng trình máy ch đã nêu trong câu aế ố ế ươ ủ- Đ c hai dòng l nh t bàn phím và g i dòng đ c đ c đ n máy chọ ệ ừ ử ọ ượ ế ủ- N u dòng đ c đ c là “quit” (không phân bi t ch hoa ch th ng) thì ng t k tế ọ ượ ệ ữ ữ ườ ắ ế
n i v i máy ch và k t thúc ch ng trìnhố ớ ủ ế ươ- Đ c k t qu tr v và in ra màn hìnhọ ế ả ả ề
Câu 4: Vi t ch ng trình theo mô hình Client-Server s d ng Socket ch đ khôngế ươ ử ụ ở ế ộ
n i k t:ố ếa) Ch ng trình phía máy ch :ươ ủ- L ng nghe k t n i trên c ng 1111ắ ế ố ổ- Nh n m t chu i r i chuy n ki u thành (double) tính căn b c 2 r i g i tr v choậ ộ ỗ ồ ể ể ậ ồ ử ả ề
client.
- Đóng k t n i.ế ốb) Ch ng trình phía máy khách:ườ- K t n i đ n c ng 1111.ế ố ế ổ- Đ c m t chu i t bàn phím, g i chu i đ n Server và nh n k t qu tr v hi n trênọ ộ ỗ ừ ử ỗ ế ậ ế ả ả ề ệ
màn hình.
- Đóng k t n i.ế ốCâu 5: Vi t ch ng trình chat per to per, cho phép 2 máy tính g i tr c ti p các thôngế ươ ử ự ế
đi pệ cho nhau
IV. PRC và RMI.IV.1. Bài t p m u:ậ ẫBài 1: Xây d ng m t ng d ng tính t ng c a 1 m ng đ c g i t xa.ự ộ ứ ụ ổ ủ ả ượ ọ ừ* Xây d ng ph ng th c đ c g i t xa c a các đ i t ng.ự ươ ứ ượ ọ ừ ủ ố ượ// Khai báo th vi n c a rmiư ệ ủimport java.rmi.*;
\\ Xây d ng l p Tong đ c k th a t l p Remoteự ớ ượ ế ừ ừ ớpublic interface Tong extends Remote
{
// Đ nh nghĩa m t remote Interface có tên là tong(int[])ị ộ public int tong(int[]a) throws RemoteException;
}
* T o l p cài đ t cho giao di n khai báo ()ạ ớ ặ ệimport java.rmi.*;
public class Tongipl implements Tong
{
// Xây d ng hàm đ tính t ng c a m t m ng.ự ể ổ ủ ộ ả public int tong(int[]a) throws RemoteException
{
System.out.println("may khach yeu cau");
int tong =0;
for(int i=0; i<a.length;i++ )
{
tong+=a[i];
}
return tong;
}
}
* Xây d ng ch ng trình phía Serverự ươ// Khai báo th vi n cho Serverư ệimport java.rmi.server.*;
import java.rmi.*;
public class Server
{
public static void main (String[] args)
{
try
{
// T o đ i t ng Tongipl th c s .ạ ố ượ ự ự Tongipl t=newTongipl ();
// Thông báo s hi n di n c a đ i t ng cho máy áo javaự ệ ệ ủ ố ượUnicastRemoteObject.exportObject(t);
// Đăng ký đ i t ng v i b quán lý c a rmiố ượ ớ ộ ủNaming.bind("rmi://localhost/MyT",t);
System.out.println("Register Thanh cong!");
}
catch(Exception e)
{}
}
}
* Xây d ng ch ng trình phía Client.ự ươimport java.io.*;
public class Client
{
public static void main(String[] args)
{
try
{
System.out.println(" tim doi tuong truy xuat theo ten");
Tong = (Tong)Naming.lookup("rmi://localhost/MyT");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Ban hay nhap so phan tu cua mang vao");
int n = Integer.parseInt(br.readLine());
int[]a= new int[n];
for(int i=0; i<a.length;i++)
{
System.out.println("Nhap phan tu a[ "+i+ "] " );
a[i]=Integer.parseInt(br.readLine());
}
// G i ph ng th c c a đ i t ngọ ươ ứ ủ ố ượ System.out.println("TONG "+ c.tong(a));
}
catch(IOException ex)
{}
catch(Exception e)
{ System.out.print(e); }
}
}
* Biên d ch các file java ngu nị ồ .(Ví d ụ T t c các file đ u n m trong th m cấ ả ề ằ ư ụ
(E:\\RMI))).
+ E:\RMI> javac Tong.java.
+ E:\RMI> javac Tongipl.java.
+ E:\RMI> javac Server.java.
+ E:\RMI> javac Client.java.
* Sinh l p trung gian STUB và SKETLETONớ+ E:\RMI> rmi Tongipl
* Ch y ch ng trình rmiregistry.exeạ ươ+ E:\RMI> rmiregistry.exe.
* Kh i đ ng đ i t ng Serverở ộ ố ượ (m m t c a s m i c a msdos ch y ch ng trìnhở ộ ử ổ ớ ủ ạ ươ
c a Server).ủ+ E:\RMI> java Server
K t quế ảRegister Thanh cong
* Kh i đ ng đ i t ng Clientở ộ ố ượ (m m t c a s m i c a msdos ch y ch ng trình c aở ộ ử ổ ớ ủ ạ ươ ủ
Client).
+ E:\RMI>java Client.
K t quế ả
IV. 2. Bài t p:ậCâu 1: Xây d ng m t ng d ng đ o chu i đ c g i t xa. ự ộ ứ ụ ả ỗ ượ ọ ừCâu 2: Xây d ng m t ng d ng tr ra GetTime(), GetDate c a máy ch tr v cho máyự ộ ứ ụ ả ủ ủ ả ề
g i t xa.ọ ừCâu 3: Xây d ng m t ng d ng chát Client_Server s d ng k thu t l p trình phân tán.ự ộ ứ ụ ử ụ ỹ ậ ậ