# Trả lời:
Dán code server vào bên dưới
ĐỀ THI BÀI LÀM - Đề 1
Tên học phần: Lập Trình Mạng
học phần: Hình thfíc thi: Tự luận giám sát
Thời gian làm bài: 30 phút (không kể thời gian phát đề nộp bài)
Được sfí dụng tài liệu khi làm bài. Không chia sẻ bài cho nhau, nếu phát hiện sẽ chia đều số điểm.
Họ tên: Nguyễn Nghĩa Lớp: 23T-DT3 MSSV: 102230308
Sinh viên làm i trực tiếp trên tệp này, lưu tệp với định dạng MSSV_HọTên.pdf nộp bài thông qua
MSTeam:
Câu 1 (8 điểm): Hãy xây dựng chương trình chia sẻ màn hình từ server cho các client. Lưu ý cần tối ưu cho mỗi
client về cả đường truyền lẫn chất lượng hình ảnh.
TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA Công Nghệ Thông Tin
BỘ MÔN: MẠNG & TT
Dán code client vào bên ới
Dán một số các kết quả thực thi vào bên dưới cho thấy mỗi client tốc độ đường truyền cũng
như chất lượng hình ảnh khác nhau
Client1:
Localhost
# Trả lời:
Phía server:
- Sau khi sfí dụng robot để chụp màn hình. Thì em đã có fíng dụng sfí lý tín hiệu số: áp dụng
Gaussian Blur kernel 3x3 lên frame để làm mượt hình ảnh , giảm nhiễu, để tăng hiệu quả nén.
- Sau khi dùng bộ lọc kernel. Thì so với code chuyển BufferedIgmae từ png sang jpg để giảm
dung lượng hình ảnh, giảm dung lượng truyền đi.
- Sau khi chuyển về jpg ng Deflater để nén jpeg, để tiết kiệm băng thông
- giới hạn FPS: giữa các frame thì sleep 50ms để giảm tải CPU băng thông(tương đương
khoảng 20FPS)
- elapsed_ms_total = (start- end)/1000000 để tính độ trễ
Phía Client:
- Tách luồng, luồng nhận dữ liệu chạy riêng luồng vẽ chạy riêng, tránh chặn khi vẽ, cải thiện
Câu 2 (2 điểm): Hãy tả bằng lời rằng em đã làm trong đoạn code trên để tối ưu về tốc độ đường truyền,
chất lượng hình ảnh cho mỗi client. Bạn nào dùng AI để trả lời coi như không có điểm.
Client2:
Đà Nẵng, ngày tháng năm 2025
mượt hơn, tránh chặn khi nhận dữ liệu
- Trong code cũ thì dùng paint để vẽ trực tiếp gống như vòng lặp vô tận. Thì em đã dùng 2
BuferedImage và vẽ trong Panel, để vẽ trở nên mượt hơn, giảm tính toán trong paintComponent
- hàm giải nén hình nh dùng Inflater khi server gfíi qua lưu trong receiveBuffer
- dùng graphics2D để cung cấp khả ng vẻ cac hơnchất lượng hơn, tránh bị nhấp nháy
- Để tránh tình trạng ghi/đọc buffer đồng thời

Preview text:

TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA Công Nghệ Thông Tin BỘ MÔN: MẠNG & TT
ĐỀ THI VÀ BÀI LÀM - Đề 1
Tên học phần: Lập Trình Mạng Mã học phần:
Hình thfíc thi: Tự luận có giám sát
Thời gian làm bài: 30 phút (không kể thời gian phát đề và nộp bài)
Được sfí dụng tài liệu khi làm bài. Không chia sẻ bài cho nhau, nếu phát hiện sẽ chia đều số điểm.
Họ tên: Nguyễn Sĩ Nghĩa Lớp: 23T-DT3 MSSV: 102230308
Sinh viên làm bài trực tiếp trên tệp này, lưu tệp với định dạng MSSV_HọTên.pdf và nộp bài thông qua MSTeam:
Câu 1 (8 điểm): Hãy xây dựng chương trình chia sẻ màn hình từ server cho các client. Lưu ý cần tối ưu cho mỗi
client về cả đường truyền lẫn chất lượng hình ảnh. # Trả lời:
Dán code server vào bên dưới
Dán code client vào bên dưới
Dán một số các kết quả thực thi vào bên dưới cho thấy mỗi client có tốc độ đường truyền cũng
như chất lượng hình ảnh khác nhau
Client1: Localhost Client2:
Câu 2 (2 điểm): Hãy mô tả bằng lời rằng em đã làm gì trong đoạn code ở trên để tối ưu về tốc độ đường truyền,
chất lượng hình ảnh cho mỗi client. Bạn nào dùng AI để trả lời coi như không có điểm. # Trả lời: Phía server: -
Sau khi sfí dụng robot để chụp màn hình. Thì em đã có fíng dụng sfí lý tín hiệu số: áp dụng
Gaussian Blur kernel 3x3 lên frame để làm mượt hình ảnh , giảm nhiễu, để tăng hiệu quả nén. -
Sau khi dùng bộ lọc kernel. Thì so với code cũ chuyển BufferedIgmae từ png sang jpg để giảm
dung lượng hình ảnh, giảm dung lượng truyền đi. -
Sau khi chuyển về jpg dùng Deflater để nén jpeg, để tiết kiệm băng thông -
Có giới hạn FPS: giữa các frame thì sleep 50ms để giảm tải CPU và băng thông(tương đương khoảng 20FPS) -
Có elapsed_ms_total = (start- end)/1000000 để tính độ trễ Phía Client: -
Tách luồng, luồng nhận dữ liệu chạy riêng và luồng vẽ chạy riêng, tránh chặn khi vẽ, cải thiện
mượt mà hơn, tránh chặn khi nhận dữ liệu -
Trong code cũ thì dùng paint để vẽ trực tiếp gống như vòng lặp vô tận. Thì em đã dùng 2
BuferedImage và vẽ trong Panel, để vẽ trở nên mượt hơn, giảm tính toán trong paintComponent -
Có hàm giải nén hình ảnh dùng Inflater khi server gfíi qua lưu trong receiveBuffer -
Có dùng graphics2D để cung cấp khả năng vẻ cac hơn và chất lượng hơn, tránh bị nhấp nháy -
Để tránh tình trạng ghi/đọc buffer đồng thời
Đà Nẵng, ngày tháng năm 2025