Upload
dong-nguyen
View
94
Download
0
Embed Size (px)
Citation preview
Tài Liệu Ôn Thi Lập Trình Mạng Mobile : 0989995221
TÀI LIỆU ÔN TẬP LẬP TRÌNH MẠNG
Phần I : Kết Nối Bằng TCP/IP
Bước 1 : Khai báo các thông số kết nối cho Server (Server.Java)
ServerSocket server=new ServerSocket(8080); //có thể thay đổi số cổng 8080 thành cổng khác
Bước 2 : Khởi động client để kết nối đến Server (Client.Java)
Socket server=new Socket("127.0.0.1",8080); //có thể thay đổi IPServer và port(chú ý là số cổng của Client phải trùng với Server.
Bước 3 : Server chấp nhập kết nối từ Client (Server.Java)
Socket client=server.accept();
Bước 4 : Bắt đầu tiến hành làm việc theo yêu cầu của đề bài
Mẫu Code Gửi Thông Tin Từ Client : //khai báo pw để cho phép gửi thông tin PrintWriter pw=new PrintWriter(server.getOutputStream()); //Các lệnh tiến hành gửi thông điệpString st = "Thông điệp được gửi đi từ Client";pw.write(st);pw.write("\n");pw.flush();
Mẫu Code Nhận Thông Tin Của Client: //Khai báo br để đọc thông tin được gửi đến ClientBufferedReader br = new BufferedReader(new InputStreamReader( server.getInputStream( ) ) );//Lệnh đọc thông tin st=br.readLine();
Mẫu Code Gửi Thông Tin Từ Server : //khai báo pw để cho phép gửi thông tin PrintWriter pw=new PrintWriter(client.getOutputStream()); //Các lệnh tiến hành gửi thông điệpString st = "Thông điệp được gửi đi từ Server : ";pw.write(st);pw.write("\n");pw.flush();
http://dontruongbt.spaces.live.com/ - 1 -
Tài Liệu Ôn Thi Lập Trình Mạng Mobile : 0989995221
Mẫu Code Nhận Thông Tin Của Server : //Khai báo br để đọc thông tin được gửi đến ServerBufferedReader br = new BufferedReader(new InputStreamReader( client.getInputStream( ) ) );//Lệnh đọc thông tin st=br.readLine();
Mẫu Code Xử lý chuỗi bằng hàm :st = HamXuLyChuoi(st); // VD : hàm chuẩn hoá chuỗi : st = ChuanHoa(st);
Phần II : Kết Nối Bằng UDP
Bước 1 : Khai báo các thông số kết nối cho Server (Server.Java)
int port = 2812; //có thể thay đổi bằng cổng khácDatagramSocket socket = new DatagramSocket(port);
Bước 2 : Khởi động client để kết nối đến Server (Client.Java)
DatagramSocket socket = new DatagramSocket();InetAddress ipServer = InetAddress.getByName("localhost");//"server name"int port = 2812;
Bước 3: Bắt đầu tiến hành làm việc theo yêu cầu của đề bài
Mẫu Code Gửi Thông Tin Từ Client : byte []sendData;System.out.print("\nClient : ");stSend=in.readLine();//dữ liệu được nhập từ bàn phím để gửi đisendData = stSend.getBytes(); //chuyển sang dạng Byte để gửiDatagramPacket sendPacket = new DatagramPacket( sendData,sendData.length,ipServer,portServer);socket.send(sendPacket);
Mẫu Code Nhận Thông Tin Của Server : byte []buffer = new byte[1024];DatagramPacket receivePacket = new DatagramPacket(buffer,buffer.length);socket.receive(receivePacket);String stReceive = new String(receivePacket.getData(),0,receivePacket.getLength());
http://dontruongbt.spaces.live.com/ - 2 -
Tài Liệu Ôn Thi Lập Trình Mạng Mobile : 0989995221
Mẫu Code Gửi Thông Tin Từ Server : byte []sendData;BufferedReader in = new BufferedReader(new InputStreamReader(System.in));System.out.print("\nServer : ");String stSend = in.readLine();sendData = stSend.getBytes();DatagramPacket sendPacket = new DatagramPacket( sendData,sendData.length,ipClient,portClient);
Mẫu Code Nhận Thông Tin Của Server : byte []buffer = new byte[1024];packet = new DatagramPacket(buffer,buffer.length);socket.receive(packet);stReceive = new String(packet.getData(),0,packet.getLength());System.out.println("\nClient : " + stReceive);
Mẫu Code Xử lý chuỗi bằng hàm :stReceive= HamXuLyChuoi(stReceive); //VD : stReceive= ChuanHoa(stReceive);
Phần III : Một số chương trình con xử lý chuỗi
A, hàm chuẩn hoá chuỗi, kết quả trả về là 1 chuỗi sau khi đã chuẩn hoá :public String ChuanHoa(String st){
st=st.trim();while (st.indexOf(" ")>=0){ st=st.replaceAll(" "," ");}st = st.toLowerCase();String[] ARR=st.split(" ");for (int i = 0; i < ARR.length; i++)
ARR[i]=ARR[i].substring(0, 1).toUpperCase().concat(ARR[i].substring(1));st="";for (int i = 0; i < ARR.length-1; i++)
st=st.concat(ARR[i])+" ";st=st.concat(ARR[ARR.length-1]);return st;
}
B, Hàm đảo ngược chuỗi :public String DaoNguoc(String st){
StringBuffer temp = new StringBuffer(st);
http://dontruongbt.spaces.live.com/ - 3 -
Tài Liệu Ôn Thi Lập Trình Mạng Mobile : 0989995221
return temp.reverse().toString();}
C, Hàm đếm số ký tự trong chuỗi (không tính dấu cách) :public int DemKyTu(String st){
int dem=0;for (int i=0; i<st.length(); i++)
if (st.charAt(i)!=' ')dem = dem + 1;
return dem;}Trường hợp tính cả dấu cáchpublic int DemKyTu(String st){
return st.length();}
D, Hàm đếm số từ trong chuỗi (chuỗi đã chuẩn hoá) :public int DemTu(String st){
String[] temp;temp = st.split(" ");return temp.length;
}
Trường hợp chuỗi chưa chuẩn hóa:public int DemTuTrongChuoiKhongChuanHoa(String st){
int dem;if (st.charAt(0)!=' ')
dem = 1;else
dem = 0;for (int i=0;i<st.length();i++ ){
if (st.charAt(i)==' ' && st.charAt(i+1)!=' '){
dem++;}
}return dem;
}
E, Đếm số lần xuất hiện của các ký tự trong chuỗi (có phân biệt hoa thường) :
http://dontruongbt.spaces.live.com/ - 4 -
Tài Liệu Ôn Thi Lập Trình Mạng Mobile : 0989995221
public void DemSoLanXuatHienKyTu(String st){
char kt;int dem;System.out.println("So lan xuat hien cac ky tu trong chuoi : ");for (kt='A';kt<='z' ;kt++ ){
dem = 0;for (int i=0;i<st.length();i++)
if (kt==st.charAt(i))dem++;
if (dem!=0)System.out.println("\tKy tu " + kt + " xuat hien " + dem + " lan");
}}
F, Đếm số lần xuất hiện các ký tự, không phân biệt chữ hoa thường :public void DemSoLanXuatHienKyTu1(String st){
char kt;int dem;String temp = st.toUpperCase();System.out.println("So n xuat hien cac ky tu trong chuoi : ");for (kt='A';kt<='Z' ;kt++ ){
dem = 0;for (int i=0;i<st.length();i++)
if (kt==temp.charAt(i))dem++;
if (dem!=0)System.out.println("\tKy tu " + kt + " xuat hien " + dem + " lan");
}}
G, Đếm số lần xuất hiện của 1 chuỗi tìm trong chuỗi :public void DemSoLanXuatHienTu(String st){
int dem=0;String sTim = "Truongbt";for (int i=0;i<=st.length()-sTim.length();i++)
if (sTim.equalsIgnoreCase(st.substring(i,i+sTim.length())))dem++;
if (dem==0)System.out.println("Chuoi '"+ sTim +"' khong xuat hien trong chuoi.");
elseSystem.out.println("Chuoi '"+ sTim +"' xuat hien " + dem + " lan.");
http://dontruongbt.spaces.live.com/ - 5 -
Tài Liệu Ôn Thi Lập Trình Mạng Mobile : 0989995221
}Đếm số lần xuất hiện của 1 ký tự trong chuỗi :public int DemKT(String st){
int dem = 0;char kt='A'; //ký tự muốn đếmfor (int i=0;i<st.length();i++)
if (kt==st.charAt(i))dem++;
return dem;}
H, Thay thế toàn bộ chuỗi Tìm bằng chuỗi Thay Thế : public String ThayThe(String st){
String sTim = "Chuỗi Tìm";String sThayThe = "Chuỗi Thay Thế";st = st.replaceAll(sTim,sThayThe);return st;
}Trường hợp thay thế ký tự tìm bằng ký tự thay thếpublic String ThayTheKyTu(String st){
char kTim = 'a';char kThayThe = '@';st = st.replace(kTim,kThayThe);return st;
}
I, Kiểm tra chuỗi có toàn số hay không?public boolean ktChuoiSo(String str){
for(int i=0;i<str.length();i++)if(str.charAt(i)<'0'||'9'<str.charAt(i))
return false;return true;
}
K, Biến chuỗi thành chuỗi chữ hoapublic String ChuoiHoa(String str){
return str.toUpperCase();}
L, Biến chuỗi thành chuỗi chữ thường
http://dontruongbt.spaces.live.com/ - 6 -
Tài Liệu Ôn Thi Lập Trình Mạng Mobile : 0989995221
public String ChuoiThuong(String str){
return str.toLowerCase();}
M, Kiểm tra xem chuỗi có đối xứng hay không?public boolean KiemTraDoiXung(String st){
StringBuffer stTemp = new StringBuffer(st);String st1 = stTemp.reverse().toString();if (st1.equals(st))
return true;else
return false;}
N, Biến chữ cái đầu sau dấu cách thành chữ hoa :public String ChuHoaDau(String st){
if (st.charAt(0)!=' '){
st = st.substring(0,1).toUpperCase().concat(st.substring(1));}for (int i=0;i<st.length() ;i++ )
if (st.charAt(i)==' '){
int vt = i+1;String st1 = st.substring(0,vt);String st2 = st.substring(vt,vt+1).toUpperCase();String st3 = st.substring(vt+1);st = st1.concat(st2.concat(st3));
}return st;
}
Phần IV: Bài Tập Ứng Dụng :Hãy viết một ứng dụng Client/Server, sử dụng socket, theo yêu cầu sau :
- Chương trình Client :o Cho phép người dùng nhập vào một chuỗi ký tựo Gửi chuỗi ký tự nhận được đến Servero Nhận dữ liệu trả về từ Server và in ra màn hìnho Kết thúc chương trình.
- Chương trình Server :o Nhận kết nối từ Client
http://dontruongbt.spaces.live.com/ - 7 -
Tài Liệu Ôn Thi Lập Trình Mạng Mobile : 0989995221
o Nhận chuỗi ký tự từ Cliento Thay thế tất cả các chuỗi con “Dai Hoc” bằng chuỗi “DH” và gửi về cho Client
Kết thúc chương trình.
MayKhach.java
import java.io.*;import java.net.*;import java.util.*;
class MayKhach {
public static void main(String[] args) throws Exception{
Socket server=new Socket("127.0.0.1",8080);//có thể đổi IP hoặc PortSystem.out.println("Client kết nối đến cổng 8080 của Server...");
PrintWriter pw=new PrintWriter(server.getOutputStream());BufferedReader br=new BufferedReader(new
InputStreamReader(server.getInputStream()));String st;
//Nhập chuỗi bất kỳ từ bàn phímBufferedReader in = new BufferedReader(new InputStreamReader(System.in));System.out.print("Nhap chuoi bat ky : ");st = in.readLine();
//Gửi chuỗi đã nhập từ bàn phím đến Máy Chủpw.write(st);pw.write("\n");pw.flush();
//Nhận lại chuỗi được gửi trả về từ Máy Chủ và in lên màn hìnhst=br.readLine();System.out.println("Chuoi nhan duoc tu Server : " + st);
//Kết thúc chương trìnhpw.close();br.close();server.close();
}}
http://dontruongbt.spaces.live.com/ - 8 -
Tài Liệu Ôn Thi Lập Trình Mạng Mobile : 0989995221
MayChu.java
import java.io.*;import java.net.*;import java.util.*;
class MayChu {
public static void main(String[] args) throws Exception{
ServerSocket server=new ServerSocket(8080);//cổng trùng với cổng ở ClientSystem.out.println("Server chờ kết nối ở cổng 8080....");
Socket client=server.accept();System.out.println("Kết Nối Thành Công.");
PrintWriter pw=new PrintWriter(client.getOutputStream());BufferedReader br=new BufferedReader(new
InputStreamReader(client.getInputStream()));String st="";
//Nhận chuỗi bất kỳ được gửi từ bàn phímst=br.readLine();
//Tiến hành thay thế chuỗi, hàm thay thế được viết bên dướist=ThayThe(st);
//Gửi trả lại chuỗi sau khi đã thay thế về cho Máy Kháchpw.write(st);pw.write("\n");pw.flush();
//Kết thúc chương trìnhbr.close();
pw.close(); client.close();
}public static String ThayThe(String st){
String sTim = "Dai Hoc";String sThayThe = "DH";st = st.replaceAll(sTim,sThayThe);return st;
}}
http://dontruongbt.spaces.live.com/ - 9 -