Đánh giá mức độ hoàn thành STT Họ và Tên Phân công hoàn thành Tiến độ Ghi chú 1 Nguyễn Minh Trực - Tải được các mail từ mailbox về client - Tổ chức file config - Viết báo cáo 3/3 2 Nguyễ
Trang 1TRƯỜNG ĐẠI HỌC KHOA HỌC TỤ NHIÊN
KHOA CÔNG NGHỆ THÔNG TIN
0 BÁO CÁO
ĐỒ ÁN MẠNG MÁY TÍNH
LẬP TRÌNH SOCKET
GVHD: Nguyễn Thanh Quân
SVTH MSSV
Nguyễn Minh Trực 22120394
Nguyễn Sinh Trực 22120395
Bùi Khắc Trung 22120396
Trang 2NHẬN XÉT CỦA GIẢNG VIÊN
Trang 3LỜI NÓI ĐẦU
Kể từ khi cuộc cách mạng công nghiệp lần thứ 3 nổ ra – cuộc cách mạng kỹ thuật số
(tiếng anh: Digital Revolution) vào những thập niên 50 – 70 của thế kỉ 20, mạng internet
đã được hình thành và có những bước phát triển lớn Đến nay, internet đã trở thành một
phần không thể thiếu trong cuộc sống, được ứng dụng rộng rãi trong mọi lĩnh vực Công
nghệ được sử dụng ngày càng hiện đại và thay đổi liên tục để đáp ứng nhu cầu càng cao
của con người Môn học Mạng máy tính (Computer Networking) ra đời để giúp người
học hiểu rõ hơn về các thành phần trong mạng internet và cách thức hoạt động của nó
Một phần nội dung không thể thiếu trong môn Mạng máy tính là lập trình socket Nhờ
có socket mà các ứng dụng giao tiếp được với nhau thông qua môi trường mạng dễ dàng
hơn
Qua đồ án “Lập trình socket – Viết chương trình mail Client”, chúng em xin gửi lời cảm
ơn chân thành đến thầy Nguyễn Thanh Quân – người đã hướng dẫn chúng em hoàn
thành đồ án này
Mặc dù đã rất cố gắng nhưng sai sót là không thể tránh khỏi Chúng em hy vọng nhận
được những nhận xét đánh giá từ thầy/cô để đồ án chúng em có được những kinh
nghiệm quý báu trong những sản phẩm sau này
Chân thành cảm ơn!
Nhóm thực hiện
Trang 4Mục lục
I Thông tin thành viên 1
1 Giảng viên hướng dẫn 2
2 Sinh viên thực hiện 3
II Đánh giá mức độ hoàn thành 4
III Kịch bản giao tiếp chương trình 4
1 Gửi thư bằng giao thức SMTP 5
2 Nhận thư bằng giao thức POP36
IV Môi trường lập trình và các framework hỗ trợ 4
V Hướng dẫn sử dụng 4
1 Gửi thư 5
2 Nhận thư 6
3 Các chức năng khác 6
VI Bảng phân công công việc chi tiết 4
VII. Tham khảo 4
Trang 5I. Thông tin thành viên
1 Giảng viên hướng dẫn:
- Nguyễn Thanh Quân
- Lớp 22CTT6, học kì I năm học 2023-2024
2 Sinh viên thực hiện
STT Họ và Tên MSSV
1 Nguyễn Minh Trực 22120394
2 Nguyễn Sinh Trực 22120395
3 Bùi Khắc Trung 22120396
II. Đánh giá mức độ hoàn thành
STT Họ và Tên Phân công hoàn thành Tiến độ Ghi chú
1 Nguyễn Minh Trực
- Tải được các mail từ mailbox
về client
- Tổ chức file config
- Viết báo cáo
3/3
2 Nguyễn Sinh Trực
- Gửi được email tới To và CC
- Gửi được mail với BCC
- Gửi được mail với attach file 3/3
3 Bùi Khắc Trung
- Quản lý trạng thái đọc mail
- Xử lý lọc email
- Xử lý tự động tải mail từ
mailbox theo thời gian cấu hình
trong file config
3/3
Trang 6III. Kịch bản giao tiếp chương trình
1 Gửi thư bằng giao thức SMTP
Client Server
Socket.connect()
[string encoded]
220 Test mail server
[string encoded]
EHLO [<host ip>]
EHLO [127.0.0.1]
[string encoded]
250 OK
[string encoded]
MAIL FROM: <sender mail address>
[string encoded]
250 sender <sender mail address> OK
[string encoded]
RCPT TO: <recipient(s) mail address>
[string encoded]
250 recipient <sender mail address> OK
(…)
[string encoded]
DATA
[string encoded]
354 enter mail, end with line containing only “.”
[string encoded]
<message in MIME multiparts end with line
containing only “.”>
[string encoded]
250 # bytes accepted
[string encoded]
QUIT
[string encoded]
221 closing connection
Trang 72 Nhận thư bằng giao thức POP3
Client Server
Socket.connect()
[string encoded]
USER <user>
[string encoded]
+OK Test Mail Server
[string encoded]
+OK
[string encoded]
PASS <pass>
[string encoded]
+OK
[string encoded]
UIDL
[string encoded]
LIST
[string encoded]
+OK
1 <uid>
2 <uid>
…
[string encoded]
+OK
1 <size of mail>
2 <size of mail>
…
[string encoded]
RETR <mail’s sequence>
[string encoded]
+OK <mail size>
<mail content…>
[string encoded]
QUIT
[string encoded]
+OK
Trang 8IV. Môi trường lập trình, các framework hỗ trợ
- Ngôn ngữ lập trình Python 3.11.7
- Editor: Visual Studio Code, MingW Text Editor
- Môi trường máy tính: Windows 11 64 bit
Các framework hỗ trợ:
- GUI framework: tkinter
Trang 9V. Hướng dẫn sử dụng
1 Giao diện ứng dụng khi khởi động
- Khi mở ứng dụng, người dùng sẽ nhìn thấy giao diện đăng nhập vào tài khoản
email của mình, người dùng có thể để trống trường USERNAME và PASSWORD
để đăng nhập vào tài khoản khách (guest)
Trang 10- Sau khi đăng nhập xong, giao diện ứng dụng sẽ chuyển sang Menu chính với các
tùy chọn chức năng như Gửi thư, Xem thư, Đặt lại thư cục bộ hoặc Thoát chương
trình
2 Gửi thư
- Khi lựa chọn chức năng gửi thư, người dùng sẽ được yêu cầu nhập các thông tin
cần thiết để hoàn thành thư của mình
Trang 11- Người dùng có thể chèn thêm file đính kèm vào thư của mình bằng cách chọn Yes
khi được hỏi có muốn thêm tệp đính kèm hay không
Trang 123 Xem thư
- Khi người dùng chọn chức năng xem thư, giao diện sau sẽ hiện ra để người dùng
lựa chọn thư theo các filter(**)
Inbox: Hiện thị tất cả thư có trong hộp thư
Project: Chứa các mail được gửi từ địa chỉ test@gmail.com,
sample@test.com, … (xem trong file config)
Important: Chứa các mail có subject chứa các từ urgent, ASAP,…(xem
trong file config)
Work: Chứa các mail có nội dung chứa từ khóa như report, meeting,…
(xem trong file config)
Spam: Chứa các mail có nội dung hoặc subject chứa từ khóa virus, hack,
crack,…(xem file config)
** Lưu ý: Một mail có thể được phân vào nhiều filter khác nhau
Trang 13- Nếu thư có tệp đính kèm, người dùng có thể lựa chọn tải thư hoặc bấm enter để bỏ
Trang 15 Auto reload: Chương trình sẽ tự động kiểm tra mail từ server để tải về máy
sau một khoảng thời gian nhất định (xem file config)
Reset Local Mail: Chương trình xóa tất cả mail lưu trên máy và tải về bản
mới nhất của các mail
VI. Bảng phân công công việc chi tiết
Chức năng Hàm, lớp Người phụ trách Ghi chú
Giao diện
Gửi thư
Send_() Trung thay gửi lệnh thủ
công bằng hàm
send_command()
Nhận thư Fetch_mail()Recv_mail() TrungTrung Thêm filterFix một số lỗi
Trang 16Update_status() Trung Đóng góp
Create_path_mail() Trung Sửa lại
Create_path_file() Trung
Create_status_file() Trung
Connect_to_pop3_server() Trung
Autoload() Trung
Main() Trung Hệ thống lại code,
thêm luồng
autoload
VII. Tài liệu tham khảo