SlideShare a Scribd company logo
1 of 4
Download to read offline
Trang 1
Chương 11: Socket
Kết nối socket theo mô hình client- server
Thực hiện: Huỳnh Minh Trí.
I. Khái niệm Socket.
1. Socket.
- Trong lập trình mạng dựa trên socket, ta không truy cập trực tiếp vào các
giao thức mạng để gửi và nhận các gói tin. Thay vào đó, một bộ trung gian
được tạo ra để xử lý các giao tiếp mạng.
- Socket là một thiết bị đầu cuối giao tiếp 2 chiều, cho phép hai máy kết nối
với nhau giữa 2 chương trình chạy trên mạng.
- Các tập tin đặc biệt sử dụng để tham chiếu các kết nối mạng được gọi là
socket. Socket được định nghĩa như sau:
 Một miền truyền tin cụ thể.
 Một loại thông tin liên lạc cụ thể.
 Có một giao thức cụ thể (TCP, UDP).
- Khi một socket được tạo ra, nó phải được gắn một địa chỉ mạng cụ thể và
một port trên hệ thống, hoặc một địa chỉ mạng từ xa và một port. Khi đó
socket có thể gửi và nhận dữ liệu từ mạng.
2. Socket API.
- Dùng cơ chế client/server.
- Cung cấp hai dịch vụ vận chuyển các gói tin thông qua socket API:
 Unreliable datagram: Gói tin không đáng tin cậy.
 Reliable, byte stream-oriented:
3. Server socket.
- Server socket là một stream, cho phép đọc ghi các dòng dữ liệu tại một địa
chỉ IP và port cụ thể.
- Nó làm đơn giản đi việc xử lý dữ liệu, không phải bận tâm loại dữ liệu là gì
hay kích thước gói tin. Mọi thứ như việc xuất nhập bình thường.
II. Kết nối giữa client và server.
- Phía client: Biết hostname của server đang chạy cùng port mà nó đang lắng
nghe.
Trang 2
- Phía server: Chuẩn bị sẳng sàng cho client kết nối tới. Nếu mọi việc suôn sẻ
server cho phép client kết nối.
- Khi kết nối tới server thành công, client có thể sử dụng socket đó để giao
tiếp với server. Khi đó server tạo một socket mới gắn kết với port khác để
gắn phục vụ client kết nối, khi đó server vẫn tiếp tục lắng nghe yêu cầu kết
nối từ các client khác.
III. Câu trúc chung chương trình client- server.
1. Câu trúc chương trình client.
B1: Mở socket.
Socket socket = new Socket(InetAddress.getLocalHost(), port);
B2: Mở luồng đọc.
BufferedReader br = new BufferedReader(new
InputStreamReader(socket.getInputStream()));
B3: Mở luồng ghi.
PrintStream ps = new PrintStream(socket.getOutputStream());
B4: Gửi dữ liệu cho server.
ps.println(String str);
B5: Nhận dữ liệu từ server.
String str = br.readLine();
2. Câu trúc chương trình server.
B1: Mở socket.
ServerSocket server = new ServerSocket(port);
B2: Chờ client kết nối và chấp nhận kết nối.
Socket socket= server.accept();
B3: Mở luồng đọc.
BufferedReader br = new BufferedReader (new
InputStreamReader( socket.getInputStream()
));
B4: Mở luồng ghi dữ liệu.
PrintStream ps = new
PrintStream (socket.getOutputStream(), true);
B5: Lấy dữ liệu từ client.
String request = br.readLine();
B6: Gửi dữ liệu cho client.
Ps.println();
IV.Cấu trúc chương trình client- server Object.
1. Đối tượng.
- Các class, các đối tượng trong java.
- Dùng BufferReader chỉ gửi nhận được thông điệp dạng byte.
Trang 3
2. Cấu trúc chương trình client.
B1: Mở socket.
Socket socket = new Socket(InetAddress.getLocalHost(), port);
B2: Mở luồng đọc.
ObjectInputStream ois = new
ObjectInputStream(socket.getInputStream());
B3: Mở luồng ghi.
ObjectOutputStream oos = new ObjectOutputStream(
socket.getOutputStream());
B4: Gửi dữ liệu cho server.
Message m1 = new Message("Chao server", "Gui tien cho toi");
oos.writeObject(m1);
B5: Nhận dữ liệu từ server.
Message m2 = (Message) ois.readObject();
3. Cấu trúc chương trình server.
B1: Mở socket.
ServerSocket server = new ServerSocket(port);
B2: Chờ client kết nối và chấp nhận kết nối.
Socket cs= server.accept();
B3: Mở luồng đọc.
ObjectInputStream ois = new
ObjectInputStream(socket.getInputStream());
B4: Mở luồng ghi dữ liệu.
ObjectOutputStream oos = new ObjectOutputStream(
socket.getOutputStream());
B5: Lấy dữ liệu từ client.
Message m1 = (Message) ois.readObject();;
B6: Gửi dữ liệu cho client.
Message m2 = new Message("Server", "Het tien roi");
oos.writeObject(m2);
V. MultiThread Socket.
- Server phục vụ nhiều client cùng một lúc, nên server phải luôn trong tình
trạng lắng nghe yêu cầu kết nối của client.
- Mỗi client kết nối tới, server tạo ra một thread để phục vụ cho client đó.
Chương trình Server.
public class ServerSerializable {
public void serve() throws IOException {
int port = 1992;
Trang 4
ServerSocket server = new ServerSocket(port);
int cout = 0;
while (true) {
System.out.println("Server ready ...");
Socket socket = server.accept();
System.out.println("Client " + cout);
new ServerThread(socket).start();
}
}
Thread server
public class ServerThread extends Thread {
private Socket socket;
public ServerThread(Socket socket) {
this.socket = socket;
}
public void run() {
try {
ObjectInputStream ois;
ois = new ObjectInputStream(socket.getInputStream());
Message m1 = (Message) ois.readObject();
System.out.println("Client gui:");
System.out.println("Title: " + m1.getTitle() + "nBody: "
+ m1.getBody());
// Send
Message m2 = new Message("Server", "Het tien roi");
ObjectOutputStream oos = new ObjectOutputStream(
socket.getOutputStream());
oos.writeObject(m2);
System.out.println("Server gui:");
System.out.println("Title: " + m2.getTitle() + "nBody: "
+ m2.getBody());
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}

More Related Content

What's hot (6)

De cuongthuchanhct221 hk2_1920_n1
De cuongthuchanhct221 hk2_1920_n1De cuongthuchanhct221 hk2_1920_n1
De cuongthuchanhct221 hk2_1920_n1
 
Ch15
Ch15Ch15
Ch15
 
01 introduction
01  introduction01  introduction
01 introduction
 
Bt th lt phan tan
Bt th lt phan tanBt th lt phan tan
Bt th lt phan tan
 
tài liệu Mã nguồn mở 14 email
tài liệu Mã nguồn mở  14 emailtài liệu Mã nguồn mở  14 email
tài liệu Mã nguồn mở 14 email
 
Athena - Mail server VPS
Athena - Mail server VPSAthena - Mail server VPS
Athena - Mail server VPS
 

Viewers also liked

11-07-2013 Secret is Out (original) (4)
11-07-2013 Secret is Out (original) (4)11-07-2013 Secret is Out (original) (4)
11-07-2013 Secret is Out (original) (4)
Amitben
 
Vincent Johnson Resume 1 (1).DOCX
Vincent Johnson Resume 1 (1).DOCXVincent Johnson Resume 1 (1).DOCX
Vincent Johnson Resume 1 (1).DOCX
Vincent Johnson
 

Viewers also liked (15)

KDR Degree
KDR DegreeKDR Degree
KDR Degree
 
Talent ppt copy
Talent ppt   copyTalent ppt   copy
Talent ppt copy
 
11-07-2013 Secret is Out (original) (4)
11-07-2013 Secret is Out (original) (4)11-07-2013 Secret is Out (original) (4)
11-07-2013 Secret is Out (original) (4)
 
lspb_cv
lspb_cvlspb_cv
lspb_cv
 
certificate
certificatecertificate
certificate
 
Vincent Johnson Resume 1 (1).DOCX
Vincent Johnson Resume 1 (1).DOCXVincent Johnson Resume 1 (1).DOCX
Vincent Johnson Resume 1 (1).DOCX
 
packaging
packagingpackaging
packaging
 
KDR BHPV
KDR BHPVKDR BHPV
KDR BHPV
 
Emosi dan-kecerdasan-emosi
Emosi dan-kecerdasan-emosiEmosi dan-kecerdasan-emosi
Emosi dan-kecerdasan-emosi
 
1 gfpi f-019-formato_guia_de_aprendizaje-word
1 gfpi f-019-formato_guia_de_aprendizaje-word1 gfpi f-019-formato_guia_de_aprendizaje-word
1 gfpi f-019-formato_guia_de_aprendizaje-word
 
Cosmeticos presentacion
Cosmeticos presentacionCosmeticos presentacion
Cosmeticos presentacion
 
2.4 proteins
2.4 proteins2.4 proteins
2.4 proteins
 
2.5 enzymes
2.5 enzymes 2.5 enzymes
2.5 enzymes
 
Negara Brasil ppt
Negara Brasil pptNegara Brasil ppt
Negara Brasil ppt
 
Ηλεκτρονικό βιβλίο για τα οδοντικά εμφυτεύματα
Ηλεκτρονικό βιβλίο για τα οδοντικά εμφυτεύματαΗλεκτρονικό βιβλίο για τα οδοντικά εμφυτεύματα
Ηλεκτρονικό βιβλίο για τα οδοντικά εμφυτεύματα
 

Similar to Socket

Bai 4 lap trình phia client
Bai 4  lap trình phia clientBai 4  lap trình phia client
Bai 4 lap trình phia client
Lee Nam Nguyen
 
Bao cao do an ltm hoan chinh
Bao cao do an ltm hoan chinhBao cao do an ltm hoan chinh
Bao cao do an ltm hoan chinh
Ngok Ánk
 
Bai tap lap trinh mang(1)
Bai tap lap trinh mang(1)Bai tap lap trinh mang(1)
Bai tap lap trinh mang(1)
Linh Nguyen
 
Lap trinhcosodulieuvoi c-sharp_phan-2
Lap trinhcosodulieuvoi c-sharp_phan-2Lap trinhcosodulieuvoi c-sharp_phan-2
Lap trinhcosodulieuvoi c-sharp_phan-2
Hiển Phùng
 
BAI 7 - KY THUAT AJAX TRONG TRUYEN NHAN DU LIEU TREN WEB SERVER.pdf
BAI 7 - KY THUAT AJAX TRONG TRUYEN NHAN DU LIEU TREN WEB SERVER.pdfBAI 7 - KY THUAT AJAX TRONG TRUYEN NHAN DU LIEU TREN WEB SERVER.pdf
BAI 7 - KY THUAT AJAX TRONG TRUYEN NHAN DU LIEU TREN WEB SERVER.pdf
diptrnhth
 

Similar to Socket (20)

Bai 4 lap trình phia client
Bai 4  lap trình phia clientBai 4  lap trình phia client
Bai 4 lap trình phia client
 
Lt socket
Lt socketLt socket
Lt socket
 
Bai giang-Lap trinh he thong-Ch2-Lap trinh Socket.pdf
Bai giang-Lap trinh he thong-Ch2-Lap trinh Socket.pdfBai giang-Lap trinh he thong-Ch2-Lap trinh Socket.pdf
Bai giang-Lap trinh he thong-Ch2-Lap trinh Socket.pdf
 
Bao cao do an ltm hoan chinh
Bao cao do an ltm hoan chinhBao cao do an ltm hoan chinh
Bao cao do an ltm hoan chinh
 
Python Beginner Class day-15-networking
Python Beginner Class day-15-networkingPython Beginner Class day-15-networking
Python Beginner Class day-15-networking
 
Bai tap lap trinh mang(1)
Bai tap lap trinh mang(1)Bai tap lap trinh mang(1)
Bai tap lap trinh mang(1)
 
Giới thiệu về Mạng riêng ảo Vitual Private Network
Giới thiệu về Mạng riêng ảo Vitual Private NetworkGiới thiệu về Mạng riêng ảo Vitual Private Network
Giới thiệu về Mạng riêng ảo Vitual Private Network
 
Slide về việc bắt gói tin trên Python2.7
Slide về việc bắt gói tin trên Python2.7Slide về việc bắt gói tin trên Python2.7
Slide về việc bắt gói tin trên Python2.7
 
Dos web server it-slideshares.blogspot.com
Dos web server it-slideshares.blogspot.comDos web server it-slideshares.blogspot.com
Dos web server it-slideshares.blogspot.com
 
Lap trinhcosodulieuvoi c-sharp_phan-2
Lap trinhcosodulieuvoi c-sharp_phan-2Lap trinhcosodulieuvoi c-sharp_phan-2
Lap trinhcosodulieuvoi c-sharp_phan-2
 
ITLC Ha Noi : Openstack From Atlanta to Ha Noi - Compute
ITLC Ha Noi : Openstack From Atlanta to Ha Noi - Compute ITLC Ha Noi : Openstack From Atlanta to Ha Noi - Compute
ITLC Ha Noi : Openstack From Atlanta to Ha Noi - Compute
 
Lab lap trinhmang_v3
Lab lap trinhmang_v3Lab lap trinhmang_v3
Lab lap trinhmang_v3
 
GIỚI THIỆU VỀ THIẾT BỊ KẾT NỐI TRONG HỆ THỐNG MẠNG
GIỚI THIỆU VỀ THIẾT BỊ KẾT NỐI TRONG HỆ THỐNG MẠNGGIỚI THIỆU VỀ THIẾT BỊ KẾT NỐI TRONG HỆ THỐNG MẠNG
GIỚI THIỆU VỀ THIẾT BỊ KẾT NỐI TRONG HỆ THỐNG MẠNG
 
GIỚI THIỆU VỀ KẾT NỐI TRONG HỆ THỐNG MẠNG
GIỚI THIỆU VỀ KẾT NỐI TRONG HỆ THỐNG MẠNGGIỚI THIỆU VỀ KẾT NỐI TRONG HỆ THỐNG MẠNG
GIỚI THIỆU VỀ KẾT NỐI TRONG HỆ THỐNG MẠNG
 
BAI 7 - KY THUAT AJAX TRONG TRUYEN NHAN DU LIEU TREN WEB SERVER.pdf
BAI 7 - KY THUAT AJAX TRONG TRUYEN NHAN DU LIEU TREN WEB SERVER.pdfBAI 7 - KY THUAT AJAX TRONG TRUYEN NHAN DU LIEU TREN WEB SERVER.pdf
BAI 7 - KY THUAT AJAX TRONG TRUYEN NHAN DU LIEU TREN WEB SERVER.pdf
 
Net06 asp.net applications & state management
Net06 asp.net applications & state managementNet06 asp.net applications & state management
Net06 asp.net applications & state management
 
Apache http server
Apache http serverApache http server
Apache http server
 
Run Openstack with SSL
Run Openstack with SSLRun Openstack with SSL
Run Openstack with SSL
 
Tìm Hiểu WLAn, Giao Thức Radius, Mikrotik Router
Tìm Hiểu WLAn, Giao Thức Radius, Mikrotik RouterTìm Hiểu WLAn, Giao Thức Radius, Mikrotik Router
Tìm Hiểu WLAn, Giao Thức Radius, Mikrotik Router
 
Bai44-48.pptx
Bai44-48.pptxBai44-48.pptx
Bai44-48.pptx
 

Recently uploaded

26 Truyện Ngắn Sơn Nam (Sơn Nam) thuviensach.vn.pdf
26 Truyện Ngắn Sơn Nam (Sơn Nam) thuviensach.vn.pdf26 Truyện Ngắn Sơn Nam (Sơn Nam) thuviensach.vn.pdf
26 Truyện Ngắn Sơn Nam (Sơn Nam) thuviensach.vn.pdf
ltbdieu
 
C6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoi
C6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoiC6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoi
C6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoi
dnghia2002
 
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdfxemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
Xem Số Mệnh
 

Recently uploaded (20)

30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...
TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...
TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...
 
Giáo trình nhập môn lập trình - Đặng Bình Phương
Giáo trình nhập môn lập trình - Đặng Bình PhươngGiáo trình nhập môn lập trình - Đặng Bình Phương
Giáo trình nhập môn lập trình - Đặng Bình Phương
 
Giáo trình xây dựng thực đơn. Ths Hoang Ngoc Hien.pdf
Giáo trình xây dựng thực đơn. Ths Hoang Ngoc Hien.pdfGiáo trình xây dựng thực đơn. Ths Hoang Ngoc Hien.pdf
Giáo trình xây dựng thực đơn. Ths Hoang Ngoc Hien.pdf
 
Giới Thiệu Về Kabala | Hành Trình Thấu Hiểu Bản Thân | Kabala.vn
Giới Thiệu Về Kabala | Hành Trình Thấu Hiểu Bản Thân | Kabala.vnGiới Thiệu Về Kabala | Hành Trình Thấu Hiểu Bản Thân | Kabala.vn
Giới Thiệu Về Kabala | Hành Trình Thấu Hiểu Bản Thân | Kabala.vn
 
Trắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hội
Trắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hộiTrắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hội
Trắc nghiệm CHƯƠNG 5 môn Chủ nghĩa xã hội
 
Access: Chuong III Thiet ke truy van Query.ppt
Access: Chuong III Thiet ke truy van Query.pptAccess: Chuong III Thiet ke truy van Query.ppt
Access: Chuong III Thiet ke truy van Query.ppt
 
các nội dung phòng chống xâm hại tình dục ở trẻ em
các nội dung phòng chống xâm hại tình dục ở trẻ emcác nội dung phòng chống xâm hại tình dục ở trẻ em
các nội dung phòng chống xâm hại tình dục ở trẻ em
 
26 Truyện Ngắn Sơn Nam (Sơn Nam) thuviensach.vn.pdf
26 Truyện Ngắn Sơn Nam (Sơn Nam) thuviensach.vn.pdf26 Truyện Ngắn Sơn Nam (Sơn Nam) thuviensach.vn.pdf
26 Truyện Ngắn Sơn Nam (Sơn Nam) thuviensach.vn.pdf
 
xemsomenh.com-Vòng Lộc Tồn - Vòng Bác Sĩ và Cách An Trong Vòng Lộc Tồn.pdf
xemsomenh.com-Vòng Lộc Tồn - Vòng Bác Sĩ và Cách An Trong Vòng Lộc Tồn.pdfxemsomenh.com-Vòng Lộc Tồn - Vòng Bác Sĩ và Cách An Trong Vòng Lộc Tồn.pdf
xemsomenh.com-Vòng Lộc Tồn - Vòng Bác Sĩ và Cách An Trong Vòng Lộc Tồn.pdf
 
xemsomenh.com-Vòng Thái Tuế và Ý Nghĩa Các Sao Tại Cung Mệnh.pdf
xemsomenh.com-Vòng Thái Tuế và Ý Nghĩa Các Sao Tại Cung Mệnh.pdfxemsomenh.com-Vòng Thái Tuế và Ý Nghĩa Các Sao Tại Cung Mệnh.pdf
xemsomenh.com-Vòng Thái Tuế và Ý Nghĩa Các Sao Tại Cung Mệnh.pdf
 
Bài học phòng cháy chữa cháy - PCCC tại tòa nhà
Bài học phòng cháy chữa cháy - PCCC tại tòa nhàBài học phòng cháy chữa cháy - PCCC tại tòa nhà
Bài học phòng cháy chữa cháy - PCCC tại tòa nhà
 
C6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoi
C6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoiC6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoi
C6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoi
 
Kiến thức cơ bản về tư duy số - VTC Net Viet
Kiến thức cơ bản về tư duy số - VTC Net VietKiến thức cơ bản về tư duy số - VTC Net Viet
Kiến thức cơ bản về tư duy số - VTC Net Viet
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Đề thi tin học HK2 lớp 3 Chân Trời Sáng Tạo
Đề thi tin học HK2 lớp 3 Chân Trời Sáng TạoĐề thi tin học HK2 lớp 3 Chân Trời Sáng Tạo
Đề thi tin học HK2 lớp 3 Chân Trời Sáng Tạo
 
Bài giảng môn Truyền thông đa phương tiện
Bài giảng môn Truyền thông đa phương tiệnBài giảng môn Truyền thông đa phương tiện
Bài giảng môn Truyền thông đa phương tiện
 
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdfxemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
 
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...
 
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
 

Socket

  • 1. Trang 1 Chương 11: Socket Kết nối socket theo mô hình client- server Thực hiện: Huỳnh Minh Trí. I. Khái niệm Socket. 1. Socket. - Trong lập trình mạng dựa trên socket, ta không truy cập trực tiếp vào các giao thức mạng để gửi và nhận các gói tin. Thay vào đó, một bộ trung gian được tạo ra để xử lý các giao tiếp mạng. - Socket là một thiết bị đầu cuối giao tiếp 2 chiều, cho phép hai máy kết nối với nhau giữa 2 chương trình chạy trên mạng. - Các tập tin đặc biệt sử dụng để tham chiếu các kết nối mạng được gọi là socket. Socket được định nghĩa như sau:  Một miền truyền tin cụ thể.  Một loại thông tin liên lạc cụ thể.  Có một giao thức cụ thể (TCP, UDP). - Khi một socket được tạo ra, nó phải được gắn một địa chỉ mạng cụ thể và một port trên hệ thống, hoặc một địa chỉ mạng từ xa và một port. Khi đó socket có thể gửi và nhận dữ liệu từ mạng. 2. Socket API. - Dùng cơ chế client/server. - Cung cấp hai dịch vụ vận chuyển các gói tin thông qua socket API:  Unreliable datagram: Gói tin không đáng tin cậy.  Reliable, byte stream-oriented: 3. Server socket. - Server socket là một stream, cho phép đọc ghi các dòng dữ liệu tại một địa chỉ IP và port cụ thể. - Nó làm đơn giản đi việc xử lý dữ liệu, không phải bận tâm loại dữ liệu là gì hay kích thước gói tin. Mọi thứ như việc xuất nhập bình thường. II. Kết nối giữa client và server. - Phía client: Biết hostname của server đang chạy cùng port mà nó đang lắng nghe.
  • 2. Trang 2 - Phía server: Chuẩn bị sẳng sàng cho client kết nối tới. Nếu mọi việc suôn sẻ server cho phép client kết nối. - Khi kết nối tới server thành công, client có thể sử dụng socket đó để giao tiếp với server. Khi đó server tạo một socket mới gắn kết với port khác để gắn phục vụ client kết nối, khi đó server vẫn tiếp tục lắng nghe yêu cầu kết nối từ các client khác. III. Câu trúc chung chương trình client- server. 1. Câu trúc chương trình client. B1: Mở socket. Socket socket = new Socket(InetAddress.getLocalHost(), port); B2: Mở luồng đọc. BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); B3: Mở luồng ghi. PrintStream ps = new PrintStream(socket.getOutputStream()); B4: Gửi dữ liệu cho server. ps.println(String str); B5: Nhận dữ liệu từ server. String str = br.readLine(); 2. Câu trúc chương trình server. B1: Mở socket. ServerSocket server = new ServerSocket(port); B2: Chờ client kết nối và chấp nhận kết nối. Socket socket= server.accept(); B3: Mở luồng đọc. BufferedReader br = new BufferedReader (new InputStreamReader( socket.getInputStream() )); B4: Mở luồng ghi dữ liệu. PrintStream ps = new PrintStream (socket.getOutputStream(), true); B5: Lấy dữ liệu từ client. String request = br.readLine(); B6: Gửi dữ liệu cho client. Ps.println(); IV.Cấu trúc chương trình client- server Object. 1. Đối tượng. - Các class, các đối tượng trong java. - Dùng BufferReader chỉ gửi nhận được thông điệp dạng byte.
  • 3. Trang 3 2. Cấu trúc chương trình client. B1: Mở socket. Socket socket = new Socket(InetAddress.getLocalHost(), port); B2: Mở luồng đọc. ObjectInputStream ois = new ObjectInputStream(socket.getInputStream()); B3: Mở luồng ghi. ObjectOutputStream oos = new ObjectOutputStream( socket.getOutputStream()); B4: Gửi dữ liệu cho server. Message m1 = new Message("Chao server", "Gui tien cho toi"); oos.writeObject(m1); B5: Nhận dữ liệu từ server. Message m2 = (Message) ois.readObject(); 3. Cấu trúc chương trình server. B1: Mở socket. ServerSocket server = new ServerSocket(port); B2: Chờ client kết nối và chấp nhận kết nối. Socket cs= server.accept(); B3: Mở luồng đọc. ObjectInputStream ois = new ObjectInputStream(socket.getInputStream()); B4: Mở luồng ghi dữ liệu. ObjectOutputStream oos = new ObjectOutputStream( socket.getOutputStream()); B5: Lấy dữ liệu từ client. Message m1 = (Message) ois.readObject();; B6: Gửi dữ liệu cho client. Message m2 = new Message("Server", "Het tien roi"); oos.writeObject(m2); V. MultiThread Socket. - Server phục vụ nhiều client cùng một lúc, nên server phải luôn trong tình trạng lắng nghe yêu cầu kết nối của client. - Mỗi client kết nối tới, server tạo ra một thread để phục vụ cho client đó. Chương trình Server. public class ServerSerializable { public void serve() throws IOException { int port = 1992;
  • 4. Trang 4 ServerSocket server = new ServerSocket(port); int cout = 0; while (true) { System.out.println("Server ready ..."); Socket socket = server.accept(); System.out.println("Client " + cout); new ServerThread(socket).start(); } } Thread server public class ServerThread extends Thread { private Socket socket; public ServerThread(Socket socket) { this.socket = socket; } public void run() { try { ObjectInputStream ois; ois = new ObjectInputStream(socket.getInputStream()); Message m1 = (Message) ois.readObject(); System.out.println("Client gui:"); System.out.println("Title: " + m1.getTitle() + "nBody: " + m1.getBody()); // Send Message m2 = new Message("Server", "Het tien roi"); ObjectOutputStream oos = new ObjectOutputStream( socket.getOutputStream()); oos.writeObject(m2); System.out.println("Server gui:"); System.out.println("Title: " + m2.getTitle() + "nBody: " + m2.getBody()); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }