Tải bản đầy đủ (.pdf) (71 trang)

Sử dụng socket để xây dựng chương trình chat theo mô hình client server trong ipc

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.74 MB, 71 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG VIỆT - HÀN
KHOA KHOA HỌC MÁY TÍNH

ĐỒ ÁN MƠN HỌC LẬP TRÌNH HỆ THỐNG

SỬ DỤNG SOCKET ĐỂ XÂY DỰNG CHƯƠNG
TRÌNH CHAT THEO MƠ HÌNH CLIENT SERVER TRONG IPC

Sinh viên thực hiện

: NGUYỄN PHƯỚC THỊNH
TRẦN VĂN PHÚC
TRẦN QUỐC TÙNG

Giảng viên hướng dẫn: TS. NGUYỄN HỮU NHẬT MINH
Lớp

: 20SE2 | 20SE3 | 20SE2

Đà Nẵng, tháng 10 năm 2022


TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG VIỆT – HÀN
KHOA KHOA HỌC MÁY TÍNH

ĐỒ ÁN MƠN HỌC LẬP TRÌNH HỆ THỐNG

SỬ DỤNG SOCKET ĐỂ XÂY DỰNG CHƯƠNG
TRÌNH CHAT THEO MƠ HÌNH CLIENT SERVER TRONG IPC

Đà Nẵng, tháng 10 năm 2022




LỜI NĨI ĐẦU

Ngày nay, ứng dụng cơng nghệ thơng tin và việc tin học hóa được xem là một trong những yếu
tố mang tính quyết định trong hoạt động của các chính phủ, tổ chức, cũng như của các cơng ty,
nó đóng vai trị hết sức quan trọng, có thể tạo ra những bước đột phá mạnh mẽ.
Cùng với sự phát triển khơng ngừng về kỹ thuật máy tính và mạng điện tử, công nghệ thông tin
cũng được những công nghệ có đẳng cấp cao và lần lượt chinh phục hết đỉnh cao này đến đỉnh
cao khác. Mạng Internet là một trong những sản phẩm có giá trị hết sức lớn lao và ngày càng
trở nên một công cụ không thể thiếu, là nền tảng chính cho sự truyền tải, trao đổi thơng tin trên
tồn cầu.
Giờ đây, mọi việc liên quan đến thông tin trở nên thật dễ dàng cho người sử dụng: chỉ cần có
một máy tính kết nối internet và một dịng dữ liệu truy tìm thì gần như lập tức… cả thế giới về
vấn đề mà bạn đang quan tâm sẽ hiện ra, có đầy đủ thơng tin, hình ảnh và thậm chí đơi lúc có
cả những âm thanh nếu bạn cần… Bằng internet, chúng ta đã thực hiện được nhiều công việc
với tốc độ nhanh hơn và chi phí thấp hơn nhiều so với cách thức truyền thống. Chính điều này,
đã thúc đẩy sự khai sinh và phát triển của thương mại điện tử và chính phủ điện tử trên khắp
thế giới, làm biến đổi đáng kể bộ mặt văn hóa, nâng cao chất lượng cuộc sống con người.
Vì vậy, chúng em đã thực hiện đồ án mơn học “SỬ DỤNG SOCKET ĐỂ XÂY DỰNG
CHƯƠNG TRÌNH CHAT THEO MƠ HÌNH CLIENT - SERVER TRONG IPC”.


Sỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipc


Sỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipc

LI CM N


Chỳng em xin gi li cm n chõn thành tới nhà trường đã tận tình chỉ bảo, góp ý và tạo điều
kiện cho em hoàn thành đề tài nghiên cứu Đồ án mơn học “Lập trình hệ thống” một cách tốt
nhất.
Em xin cảm ơn TS. Nguyễn Hữu Nhật Minh đã nhiệt tình hướng dẫn em trong quá trình thực
hiện báo cáo đề tài nghiên cứu.
Trong quá trình thực hiện đề tài nghiên cứu, bản thân chúng em đã cố gắng nỗ lực, tuy nhiên
khơng tránh khỏi sai sót. Chúng em mong nhận được sự góp ý của thầy cơ giáo, và từ phía hội
đồng để đề tài nghiên cứu của chúng em được hoàn thiện hơn.

Chúng em xin chân thành cảm ơn!

Đà Nẵng, tháng 10 năm 2022


Sỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipc


Sỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipc

NHN XẫT
(Ca ging viờn hng dn)




















Sỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipc


Sỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipc

MC LC
Contents
CHNG 1

C S Lí THUYT.......................................................................................1

1.1 S lc v lp trình hệ thống.............................................................................................1
1.1.1 Khái niệm lập trình hệ thống......................................................................................1
1.1.2 Tổng quan lập trình hệ thống......................................................................................1
1.2 Tìm hiểu về truyền thơng giữa các tuyến trình – Interprocess Communication.................2
1.2.1 Khái niệm Process và IPC..........................................................................................2
1.2.2 Vì sao các process phải giao tiếp với nhau?................................................................3
1.2.3 Một số cơ chế giao tiếp giữa các process trong Linux................................................3
1.3 Lập trình Socket trên Linux...............................................................................................3
1.3.1 Mơ hình Client/Server................................................................................................3

1.3.2 Sơ lược về Socket.......................................................................................................4
1.3.3 Minh họa lập trình Socket...........................................................................................6
1.4 Tổng quan về cơng nghệ chính..........................................................................................7
1.4.1 Oracle VM VirtualBox................................................................................................7
1.4.2 Ngơn ngữ lập trình C..................................................................................................9
CHƯƠNG 2

CHƯƠNG TRÌNH DEMO.............................................................................12

2.1 Mã nguồn......................................................................................................................... 12
2.1.1 Mã nguồn Server......................................................................................................12
2.1.2 Mã nguồn Client.......................................................................................................16
2.2 Demo chương trình..........................................................................................................21
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN.................................................................................26
1 Kết luận.............................................................................................................................. 26


Sỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipc


Sỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipc

2 Hng phỏt trin.................................................................................................................26
DANH MC THAM KHO....................................................................................................27


Sỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipc


Sỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipc


DANH MC CC BNG


Sỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipc


Sỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipc

DANH MC HèN
Hỡnh 1 S lc v lp trỡnh hệ thống.......................................................................................1
Hình 2 – Mơ hình hoạt động của Stream Sockets.......................................................................5
Hình 3 – Mơ hình hoạt động của Datagram Sockets..................................................................6
Hình 4 – Logo VirtualBox..........................................................................................................6
Hình 5 – Giao diện VirtualBox...................................................................................................7
Hình 6 – Logo ngơn ngữ lập trình C...........................................................................................8
Hình 7 – Lý do nên sử dụng C....................................................................................................9
Hình 8 – Khởi động Server.......................................................................................................17
Hình 9 – Khởi động Client.......................................................................................................18
Hình 10 – Chat giữa client và server........................................................................................19
Hình 11 – Kết thúc trị chuyện..................................................................................................20
Y


Sỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipc


Sỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipc

DANH MC CM T VIT TT


STT
1
2
3
4

Cm t
IPC
OS
TCP
UDP

Vit tt
Inter-Process Communication
Operating System
Tranmission Control Protocol
User Datagram Protocol


Sỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipc


Sỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipc

CHNG 1 C S Lí THUYT
1.1 S lc v lp trình hệ thống
1.1.1 Khái niệm lập trình hệ thống

Hình 1 – Sơ lược về lập trình hệ thống


Lập trình hệ thống là hoạt động của các phần mềm hệ thống. Đầu tiên chỉ ra sự khác biệt tiêu
biểu của các chương trình hệ thống khi đã so sánh tới lập trình ứng dụng là ở đó nhắm vào lập
trình ứng dụng để sản sinh phần mềm mà cung cấp những dịch vụ tới người dùng (ví du: bộ xử
lý văn bản), trong khi những nhà lập trình hệ thống nhắm vào việc sản xuất phần mềm mà cung
cấp những dịch vụ tới phần cứng máy tính (ví dụ: phần mềm chống phân mảnh đĩa). Nó cũng
yêu cầu một độ lớn hơn của sự ý thức phần cứng.
1.1.2 Tổng quan lập trình hệ thống
Những điểm đặc biệt hơn trong lập trình hệ thống:
+ Những nhà lập trình sẽ tạo những gánh vác về phần cứng và một số thuộc tính khác
của những chương trình chạy trên hệ thống đó, và sẽ thường khai thác những thuộc tính đó (cho
ví dụ bởi việc sử dụng một giải thuật mà được biết mà hiệu quả khi nào được sử dụng với phần
cứng đặc biệt).
1


Sỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipc


Sỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipc

+ Thụng thng mt ngụn ng lp trỡnh cp thp hoặc tiếng địa phương ngơn ngữ lập
trình sử dụng đó là:
 Có thể hoạt động trong những mơi trường tài nguyên bắt buộc.
 Là rất hiệu quả và có thể thực hiện một ít ở trên đầu.
 Có một thư viện thực hiện nhỏ, hoặc không ở mọi thứ.
 Cho phép trực tiếp và “thô” mà điều khiển qua truy cập bộ nhớ và điều khiển
chảy tràn.
 Để cho người lập trình viết những phần của chương trình ngay tức khắc trên ngơn
ngữ assembly.


Những nhà lập trình hệ thống một cách đầy đủ thì khác với lập trình ứng dụng mà những người
lập trình hướng tới chuyên về một hoặc cái khác.
Trong lập trình hệ thống, những phương tiện lập trình có hạn thường sẵn có. Sự sử dụng của
tập hợp rác tự động thì khơng phải là phổ biến và gỡ rối là không đổi đôi khi để làm. Thư viện
thực hiện, nếu sẵn có ở mọi nơi, thì ít mạnh hơn nhiều thông thường, và làm ít sợ kiểm tra lỗi
hơn. Bởi vì những sự hạn chế đó, màn hình và sự đăng ký thường được sử dụng; những hệ điều
hành có thể có vơ cùng chi tiết hóa những hệ thống con đăng ký.
Thực hiện những phần nhất định trong Hệ điều hành và những quy định hoạt động mạng những
nhà lập trình hệ thống (cho ví dụ thi hành phân trang (bộ nhớ ảo) hoặc một trình điều khiển
thiết bị cho một hệ điều hành).

1.2 Tìm hiểu về truyền thơng giữa các tuyến trình – Interprocess Communication
1.2.1 Khái niệm Process và IPC
Một process (tiến trình) là một ví dụ của một chương trình đang chạy. Bất cứ khi nào bạn thơng
báo một lệnh trong Linux, nó tạo hoặc bắt đầu một process mới. Mỗi process có 1 PID (Process
ID) đại diện. PID gồm tối đa 5 chữ số và là duy nhất tại 1 thời điểm. PID của process A có thể
được tận dụng cho process B nếu process A đã kết thúc.
2


Sỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipc


Sỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipc

Inter-process communication (IPC) l mt c ch cho phộp trao đổi dữ liệu giữa các quá trình.
Bằng cách cung cấp một người dùng với một tập hợp các giao diện lập trình, IPC giúp một lập
trình tổ chức thực hiện hoạt động giữa các quá trình khác nhau. IPC cho phép một ứng dụng để
kiểm soát một ứng dụng khác, do đó cho phép chia sẻ dữ liệu mà khơng cần can thiệp.

1.2.2 Vì sao các process phải giao tiếp với nhau?
Việc cho phép truyền data giữa các process là do những lý do sau:
+ Giúp chia sẻ thông tin giữa các users.
+ Giúp speech up các tác vụ trong máy tính.
+ Giúp xây dựng modun.
+ Giúp thuận tiện trong chạy nhiều tác vụ cùng một lúc.
1.2.3 Một số cơ chế giao tiếp giữa các process trong Linux
Linux cung cấp một số cơ chế giao tiếp giữa các tiến trình gọi là IPC (Inter-Process
Communication):
+ Signals handling - Trao đổi bằng tín hiệu.
+ Pipe -Trao đổi bằng cơ chế đường ống.
+ Message Queues - Trao đổi thông qua hàng đợi tin nhắn.
+ Shared Memory - Trao đổi bằng phân đoạn nhớ chung.
+ Giao tiếp thông qua socket.
+ Giao tiếp đồng bộ dùng semaphore.

1.3 Lập trình Socket trên Linux
1.3.1 Mơ hình Client/Server
Client – Server là mơ hình phổ biến cho giao tiếp giữa 2 tiến trình/2 máy, trong đó, tiến trình
client kết nối đến tiến trình server để yêu cầu trao đổi dữ liệu.
3


Sỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipc


Sỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipcSỏằư.dỏằƠng.socket.ỏằ.xÂy.dỏằng.chặặĂng.trơnh.chat.theo.m.hơnh.client.server.trong.ipc

Client cn bit v s tn ti v a ch của tiến trình server, nhưng server khơng cần biết về sự
tồn tại và địa chỉ của client cho đến khi kết nối được thiết lập.

Mỗi khi kết nối được thiết lập, cả 2 bên đều có thể trao đổi (gửi và nhận dữ liệu).
Để thiết lập một kết nối cho cả 2 phía, cần xây dựng một socket. Có thể hiểu socket như một
điểm đầu cuối của kênh kết nối giữa 2 tiến trình.
Các hệ thống (linux, windows) đều cung cấp các hàm hệ thống để thực hiện thiết lập một
socket.
1.3.2 Sơ lược về Socket
Socket là điểm cuối end-point trong liên kết truyền thông hai chiều (two-way communication)
biểu diễn kết nối giữa Client – Server. Các lớp Socket được ràng buộc với một cổng port (thể
hiện là một con số cụ thể) để các tầng TCP (TCP Layer) có thể định danh ứng dụng mà dữ liệu
sẽ được gửi tới.
Có 2 loại socket được sử dụng rộng rãi là: stream sockets và datagram sockets.
- Stream sockets: Dựa trên giao thức TCP (Tranmission Control Protocol), là giao thức hướng
luồng (stream oriented). Việc truyền dữ liệu chỉ thực hiện giữa 2 tiến trình đã thiết lập kết nối.
Giao thức này đảm bảo dữ liệu được truyền đến nơi nhận một cách đáng tin cậy, đúng thứ tự
nhờ vào cơ chế quản lý luồng lưu thông trên mạng và cơ chế chống tắc nghẽn.

4


×