Lập trình java muticast hình ảnh

35 624 2
Lập trình java muticast hình ảnh

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Lập trình java muticast hình ảnh

Lập trình Java: Muticast hình ảnh Giảng viên hướng dẫn: Lê Đức Trị Đại Học Quốc Gia Tp.HCM Trường Khoa Học Tự Nhiên Tp HCM Khoa Điện Tử Viễn Thông  Đề tài: Multicast Hình Ảnh Nhóm2 Giáo Viên hướng dẫn: Ths Lê Đức Trị Lập trình Java: Muticast hình ảnh Giảng viên hướng dẫn: Lê Đức Trị MỤC LỤC Đọc hình ảnh từ hệ thống tập tin .28 Trong addintion để gửi ảnh chụp hình ứng dụng gửi hình ảnh lưu trữ hệ thống tập tin Các ứng dụng đọc định dạng ảnh JPEG từ thư mục theo thứ tự ngẫu nhiên 28 công getRandomImageFromDir BufferedImage tĩnh (File dir) throws IOException {String [] hình ảnh = dir.list (mới ImageFileFilter ()); 28 int ngẫu nhiên = new Random () nextInt (images.length) 28 String FileName = dir.getAbsoluteFile () + File.separator + hình ảnh [ngẫu nhiên]; 28 Tập tin imageFile = new File (tên tập tin); 28 trở lại ImageIO.read (imageFile);} 28 ImageFileFilter lớp thực FilenameFilter{ 28 boolean chấp nhận (File dir, String name){ 28 String nameLc = name.toLowerCase (); 28 trở lại nameLc.endsWith (" jpg")? true : false; đúng: đúng;}} 29 Các giới hạn 65507 byte enought cho hình ảnh nhỏ, ảnh chụp hình toàn hình không đầy đủ Nó quy mô xuống hình ảnh để chúng phù hợp với gói UDP điều làm cho hình ảnh khó xem Trong giải pháp chúng tôi, chia hình ảnh vào cách thích hợp khối có kích thước chuyển chúng qua mạng Như đề cập UDP người điều khiển giao thông xây dựng bên trong, phải chăm sóc cho .29 Kiểm soát giao thông 29 Để chắn hình ảnh truyền qua đường lát tập hợp lại theo thứ tự số tiêu đề thêm vào gói UDP Điều làm giảm lượng liệu chuyển giao gói tin, phải chấp nhận 29 29 Người gửi định kích thước slize hình ảnh, sau gửi slice người qua mạng với tiêu đề bổ sung thông tin mô tả Theo thông tin đưa thông tin tiêu đề bổ sung thu hình ảnh xác định kích thước cuối hình ảnh, vị trí liệu hình ảnh thời tiết hình ảnh hoàn thành 29 GIỚI THIỆU 1.1 Giới thiệu Lập trình Java: Muticast hình ảnh Giảng viên hướng dẫn: Lê Đức Trị Ngày mạng máy tính phát triển với tốc độ nhanh chóng việc trao đổi thông tin mạng điều tất yếu Cùng với tốc độ phát triển đời nhiều công nghệ mạng, công nghệ sử dụng giao thức kết nối khác (TCP, UDP: tuỳ vào mục đích sử dụng), làm cho việc trao đổi liệu mạng nhanh chóng, xác hiệu Multicast đời nhằm phục vụ cho mục đích Để trao đổi liệu Multicast sử dụng giao thức UDP Điểm mạnh multicast truyền tải liệu với tốc độ cao liệu gửi lần Có loại ứng dụng multicast chính: - Ứng dụng không cần khôi phục liệu mất: Ví dụ ứng dụng truyền tải hình ảnh âm thanh, méo dạng mức cho phép - Ứng dụng cần khôi phục liệu mất: Ví dụ ứng dụng Ghost Synmantec Multicast truyền nhận Trong ứng dụng cần đảm bảo tính toàn vẹn liệu, cần bit liệu bị hỏng nên cần có chế khôi phục liệu Do UDP chế tự khôi phục liệu nên phần mềm phải đảm nhiệm vai trò 1.2 Multicast gì? Multicast công nghệ dùng để truyền tải liệu từ nguồn đến nhóm máy tính muốn nhận liệu (một tiến trình gửi nhiều tiến trình nhận) Để nhận liệu máy thành viên nhóm cần kết nối đến địa Multicast liệu nguồn gửi liệu lên Từ khía cạnh multicast giống hệ thống radio hay TV Nếu kênh phát đồng thời nghe xem kênh giống người khác Ví dụ mô hình multicast: Lập trình Java: Muticast hình ảnh Giảng viên hướng dẫn: Lê Đức Trị Ví dụ multicast unicast: Ba kỹ thuật việc quản lí phân phát multicast mạng là: scoping, group management, distribution trees Lập trình Java: Muticast hình ảnh Giảng viên hướng dẫn: Lê Đức Trị 1.3 Multicast Scoping IP Multicast sử dụng tham số Time To Live (TTL) header gói liệu ứng dụng IP Multicast Các router vào giá trị TTL gói liệu để định xem gói liệu có phép qua hay không Khi đặt giá trị TTL ứng dụng IP Multicast n gói liệu n router Ví dụ, đặt Site Server's Active Channel Multicaster có giá trị TTL tới 16, để đảm bảo Site Server's Active Channel Multicaster không vượt qua 16 router Đúng unicast, thời gian multicast router chuyển gói multicast, router giảm bớt giá trị TTL gói liệu đơn vị Nếu giá trị TTL =0 router huỷ gói liệu Trên interface (cổng giao tiếp mạng) router quy định giá trị TTL mặc định Ví dụ, đặt ngưỡng TTL 10 interface gói liệu với giá trị TTL lớn 10 qua interface Cơ multicast scoping có hai khuyết điểm: - Việc xác định giá trị TTL thích hợp cho ứng dụng multicast khó khăn - Nếu người đặt ngưỡng TTL theo thói quen interface router phạm vi hoạt đông ứng dụng multicast không đoán trước Lập trình Java: Muticast hình ảnh Giảng viên hướng dẫn: Lê Đức Trị Để khắc phục giới hạn này, the Internet Engineering Task Force (IETF) đưa Administratively Scoped IP Multicast chuẩn Internet RFC 2365 in July 1998 IETF có địa IP multicast định khoảng 239.0.0.0 239.255.255.255 địa administratively scoped cho việc sử dụng mạng cục Chúng ta cấu hình router hỗ trợ địa administratively scoped đường bên mạng để hạn chế vùng multicast riêng Chúng ta định nghĩa nhiều vùng multicast cô lập mạng liệu multicast di chuyển vùng định 1.4 Multicast Group Management Một multicast network chuyển liệu multicast cho mạng có máy nhận nằm nhóm multicast tương ứng vùng multicast Sự chuyển liệu có chọn lọc khác biệt lớn multicast broadcast (broadcast gửi liệu tới tất mạng con) Để chuyển liệu multicast tới máy nhận vùng multicast, router cần thông tin tham gia thành viên mạng cục chúng Một router mạng gửi định kỳ thông điệp (message) tới tất máy tính mạng cục Các máy tính mạng cục trả lời messages router Bằng cách router xây dựng cho bảng thông kê thành viên nhóm mà chúng có liên quan Khi thành viên nhóm khác nhận thông báo máy tính thành viên thành viên nhóm hoãn báo cáo tham gia chúng đợi biến chu kỳ thời gian Thời gian đợi làm giảm lưu thông báo cáo tham gia thời gian xử lí router Miễn router biết nhóm thành viên mạng cục bộ, router chuyển liệu multicast tới mạng thành viên nhóm khác nhận liệu multicast Khi thành viên muốn join nhóm, thành viên không cần đợi câu hỏi từ router Thay vào đó, thành viên gửi báo cáo tham gia trả lời Lập trình Java: Muticast hình ảnh Giảng viên hướng dẫn: Lê Đức Trị tới câu hỏi tham gia Khi router nhận báo cáo này, chuyển liệu multicast tới mạng mà thành viên diện thành viên thành viên nhóm mạng multicast (Hình bên) IETF làm việc IGMPv3 để cải tiến IGMPv2 IGMPv3 bao gồm đặt tính Một đặc tính xác nhận máy tính nhóm nhận liệu từ nguồn 1.5 Multicast Distribution Trees Sử dụng thông tin thành viên IGMP router, multicast routing protocol xây dựng distribution tree để chuyển liệu multicast từ nguồn đến nhóm multicast Có hai loại distribution tree: sourcebased shared Khi router kết nối đến nguồn để nhận gói liệu multicast đầu tiên, router chuyển gói liệu đến đỉnh mạng để tìm máy nhận Sau kiểm tra IGMP router mạng không tìm thấy máy nhận nào, router gửi thông điệp prune (prune message) đến router cha gần đường đến nguồn Prune message loại router Một distribution tree chứa router có máy nhận nhánh Giao thức gửi tiến trình broadcast and prune cách định kỳ lúc multicast cập nhật distribution tree phản hồi đến thành viên Lập trình Java: Muticast hình ảnh Giảng viên hướng dẫn: Lê Đức Trị Một multicast routing protocol sử dụng tiến trình broadcast-andprune để thiết lập source-based tree giao thức broadcast-andprune Bởi giao thức broadcast-and-prune làm cho broadcast tuần hoàn, giao thức thích hợp cho việc sử dụng môi trường LAN có nhiều băng thông nhiều máy nhận Sự bất lợi khác việc sử dụng giao thức broadcast-and-prune hai nguồn khác gửi liệu cho nhóm multicast giao thức phải tạo source-based distribution tree cho nguồn Trái ngược với source-based tree, shared-tree hỗ trợ nhiều nguồn liệu multicast tới nhóm multicast sử dụng distribution tree Shared tree thích hợp cho môi trường có máy nhận phân tán rải rát băng thông nhỏ môi trường WAN Một giao thức shared-tree tự động chọn người quản trị mạng định nghĩa gốc shared tree mạng Gốc router, biết điểm trung tâm (core) điểm gặp (rendezvous point) Các gốc thường trung tâm nhóm multicast Khi router nguồn nhận liệu multicast router chuyển liệu tới điểm trung tâm nhóm multicast Điểm trung tâm chuyển liệu tới tất máy nhận Lập trình Java: Muticast hình ảnh Giảng viên hướng dẫn: Lê Đức Trị nhóm Shared tree không thiết lập việc sử dụng broadcast-and-prune để tìm nhóm thành viên phụ thuộc vào tất thành viên kết nối vào Khi router tìm thấy nhóm thành viên thông qua viêc kiểm tra IGMP, router gửi yêu cầu kết nối đến điểm trung tâm Điểm trung tâm router trung gian trả lời yêu cầu với kết nối ack gửi ack đến router yêu cầu 1.6 Các vấn đề với Unicast Unicast không giống Multicast Khi ta gửi gói liệu (packet) có tiến trình gửi tiến trình nhận unicast Có hai giao thức truyền liệu mạng là: TCP UDP TCP unicast UDP unicast trường hợp gửi packet UDP có tiến trình nhận Trường hợp ngược lại broadcast multicast Unicast thống lĩnh mạng internet nhiều năm năm 1993 mà Multicast đời làm thay đổi vai trò truyền liệu mạng internet lợi ích mà đem lại Những trang web mạnh đời, người nghe nhìn thấy Với công nghệ mạng ngày có đủ khả tài để chi trả cho kết nối unicast đến tất muốn truy cập vào trang web Tuy nhiên, ứng dụng web tương trợ dịch vụ âm hình ảnh cần băng thông khổng lồ cho ứng dụng Trước multicast đời có giải pháp: thiết lập kết nối unicast riêng biệt người nhận sử dụng broadcast Giải pháp không thuận lợi kết nối đơn gửi liệu âm thanh/hình ảnh cần băng thông lớn mà có hàng trăm chí hàng ngàn kết nối hệ thống mạng bị sụp đổ Ví dụ Unicast video/audio transmission: Lập trình Java: Muticast hình ảnh Giảng viên hướng dẫn: Lê Đức Trị Broadcast dường giải pháp chưa giải pháp tốt Nếu muốn tất máy tính mạng LAN nhận liệu đồng thời từ máy gửi sử dụng broadcast Những liệu gửi đồng thời lần đến tất máy tính nhận theo địa broadcast mạng tương ứng Vấn đề khó khăn xảy máy tính gửi máy tính nhận hai mạng LAN khác nhau, trang thiết bị mạng lớp thứ (router) không cho phép gói liệu có địa máy đích broadcast qua Giải pháp lại multicast Thông qua multicast gửi liệu đến địa đặc biệt (giống tần số radio/video) Tất máy tính muốn nhận liệu phải kết nối đến địa đặc biệt Từ khía cạnh multicast giống broadcast Điều khác biệt chúng liệu multicast truyền hệ thống mạng broadcast hoạt động môi trường mạng LAN Ví dụ Multicast video/audio transmission : 10 Lập trình Java: Muticast hình ảnh Giảng viên hướng dẫn: Lê Đức Trị Sau nhập địa ip server nhấn nút accept usecase hoạt động Client lấy địa tên máy gửi đến server Sau gửi usecase kết thúc - Response Server: Usecase bắt đầu usecase Receive Create File Command usecase Receive Close File kết thúc Usecase phản hồi thông tin lên server Thông tin báo cho server biết file có tạo hay không báo cho server biết nhận lệnh close file hay chưa gửi lên danh sách packet bị nhận Usecase kết thúc thông tin gửi lên server - Receive Create File Command: Sau usecase Send Client Info kết thúc usecase Receive Create File Command thực Usecase nhận lệnh tạo file dựa vào thông tin server gửi đến tạo file Usecase kết thúc tạo xong file tạo file - Receive Packet: Sau phản hồi cho server biết tạo xong file, usecase Receive Packet hoạt động Usecase nhận packet từ server, phân tích packet ghi liệu vào file vừa tạo Usecase kết thúc client nhận lệnh close file từ server - Receive Packet Lost: Sau usecase Receive Packet kết thúc client kiểm tra xem có packet bị không, sau gửi thông tin lên server Nếu có packet bị thông tin chứa packet bị Sau gửi usecase Receive Packet Lost hoạt động Usecase nhận packet ghi packet vào file 21 Lập trình Java: Muticast hình ảnh Giảng viên hướng dẫn: Lê Đức Trị tạo Usecase kết thúc usecase Receive Close File hoạt động - Receive Close File: Usecase hoạt động với hoạt động usecase Receive Packet Receive Packet Lost Usecase nhận lệnh close file từ server kết thúc usecase Receive Packet Receiver Packet Lost 3.3.3 Sơ đồ hoạt động THIẾT KẾ CHƯƠNG TRÌNH 4.1 Phần Server Quá trình hoạt động server chia làm giai đoạn sau: Giai đoạn 1: Đợi client kết nối vào Giai đoạn 2: Gửi lệnh tạo file nghe client trả lời có tạo file hay không Giai đoạn 3: Gửi liệu 22 Lập trình Java: Muticast hình ảnh Giảng viên hướng dẫn: Lê Đức Trị Giai đoạn 4: Gửi lệnh thông báo gửi xong nghe client trả lời Giai đoạn 5: Gửi lại gói liệu mà client yêu cầu Sau trở giai đoạn thứ Lặp không client yêu cầu gửi liệu 4.1.1 Đợi client kết nối vào Mở cổng TCP để nhận thông tin client gửi đến Kết nối TCP đồng thời kiểm tra xem client server có kết nối với hay không Server tạo danh sách để lưu thông tin client 4.1.2 Gửi lệnh tạo file nghe client trả lời Khi nhấn nút start copy, server liệt kê danh sách lưu có client gửi lệnh tạo file đến tất client Ứng với client server tạo kết nối TCP Sau gửi server nghe client trả lời Nếu client không tạo file trình tạo kết nối TCP không thành công server loại bỏ thông tin client danh sách Sau nghe client trả lời server bước vào giai đoạn gửi liệu 4.1.3 Gửi liệu Giai đoạn sử dụng kết nối UDP (multicast) để thực việc kết nối vào địa multicast gửi liệu lên Để thực kết nối gửi liệu ta sử dụng hai lớp MulticastSocket DatagramPacket Để kết nối vào nhóm multicast ta gọi phương thức joinGroup() truyền vào phương thức địa lớp D Tất host (cả server client) tham gia vào trình gửi nhận liệu phải kết nối vào địa 23 Lập trình Java: Muticast hình ảnh Giảng viên hướng dẫn: Lê Đức Trị Để gửi liệu cần tạo đối tượng DatagramPakect Sau dùng phương thức send truyền đối tượng DatagramPacket vừa tạo vào phương thức send đối tượng MulticastSocket để gửi Để gửi liệu server cắt file cần gửi thành nhiều phần (DATA), phần nhiều hay dựa vào độ lớn gói liệu (packet) mà server gửi Ứng với packet đánh số (INDEX) Để đóng gói packet ta xây dựng lớp ByteStream Lớp dùng để ghi thành phần COMMAND, INDEX, LENGTH, DATA, CRC vào gói lấy thành phần Dữ liệu cắt từ file đánh số (INDEX) từ packet packet cuối Và server gửi gói Sau gửi liệu xong server bước vào giai đoạn gửi thông báo nghe client trả lời 4.1.4 Gửi lệnh thông báo gửi xong nghe client trả lời Sử dụng kết nối TCP Vì liệu trao đổi giai đoạn nhỏ Giai đoạn server gửi thông báo gửi xong packet cho tất client nghe client trả lời tạo danh sách chứa packet bị client Danh sách chứa phần index packet 4.1.5 Gửi lại gói liệu Server dựa vào danh sách packet lấy liệu đóng gói gửi đến client Quá trình gửi liệu giai đoạn giống giai đoạn gửi liệu 4.2 Phần Client Quá trình hoạt động Client chia làm giai đoạn: 24 Lập trình Java: Muticast hình ảnh Giảng viên hướng dẫn: Lê Đức Trị Giai đoạn 1: Kết nối với server gửi thông tin lên server gồm địa ip tên máy Giai đoạn 2: Nhận lệnh tạo file trả lời cho server Giai đoạn 3: Nhận liệu phân tích liệu ghi vào file tạo Giai đoạn 4: Nhận thông báo từ server trả lời cho server Giai đoạn 5: Nhận liệu bị phân tích ghi vào file Sau trở lại giai đoạn Lặp hết packet 4.2.1 Kết nối server gửi thông tin lên server Tạo kết nối TCP để gửi thông tin client đến server Kết nối TCP đồng thời kiểm tra xem client server có kết nối với hay không Nếu không kết nối với server chương trình thông báo lỗi 4.2.2 Nhận lệnh tạo file trả lời server Sau gửi thông tin lên server, client tạo kết nối TCP để nghe lệnh tạo file từ server nhận lệnh tạo file client dựa vào đường dẫn lệnh mà tạo file Khi tạo xong file không tạo client gửi thông báo lên server Nếu file không tạo kết nối TCP không thành công client thông báo lỗi 4.2.3 Nhận liệu phân tích ghi vào file Giai đoạn sử dụng kết nối UDP (multicast) Client kết nối vào địa lớp D định sẵn để nhận liệu Địa địa mà server kết nối vào để gửi liệu lên Để kết nối vào nhóm multicast ta gọi phương thức joinGroup đối tượng MulticastSocket truyền vào phương thức địa lớp D trùng với địa mà server gửi lên Tất host (cả server client) tham gia vào trình gửi nhận liệu phải kết nối vào địa 25 Lập trình Java: Muticast hình ảnh Giảng viên hướng dẫn: Lê Đức Trị Các liệu nhận packet có cấu trúc giống cấu trúc packet gửi Client lấy thành phần packet ra: COMMAND, INDEX, LENGTH, DATA, CRC Client tính lại số crc packet nhận số CRC vừa tính với số CRC mà server gửi qua client ghi phần DATA vào vị trí INDEX file tạo Trong trình nhận packet client kiểm tra mát liệu, có liệu client tạo danh sách chứa packet Và yêu cầu server gửi lại packet 4.2.4 Nhận thông báo từ server trả lời server Khi giai đoạn bắt đầu client tạo kết nối TCP để nghe server gửi lệnh đóng file Khi server gửi xong liệu server kết nối vào client để thông báo gửi xong file Khi client nhận thông báo kết thúc giai đoạn nhận liệu Sau client trả lời cho server trình nhận liệu có mát client gửi danh sách liệu đến server 4.2.5 Nhận liệu Tương tự trình nhận liệu gian đoạn Nhưng client lọc liệu mà cần phải ghi Vì server gửi liệu gửi tất packet client nên có packet client nhận nên client phải kiểm tra liệu 4.3 UDP kết nối truyền hình ảnh Việc tiếp nhận gói tin multicast chia thành bước sau: Trong bước socket multicast ist tạo cách gọi MulticastSocket () có cổng cắm ràng buộc để làm tham số Bước để tham gia vào nhóm Multicast Một nhóm Multicast đại diện số IP từ 224.0.0.0 tới 239.255.255.255 To join the group the joinGroup() method is called Để tham gia vào nhóm joinGroup () phương thức gọi Tạo đệm byte, DatagramPacket đối tượng gọi phương thức MulticastSocket nhận () để chấp nhận gói tin datagram 26 Lập trình Java: Muticast hình ảnh Giảng viên hướng dẫn: Lê Đức Trị Sau nhận xử lý gói gói liệu cách gọi GetData () DatagramPacket bước cuối rời khỏi nhóm multicast đóng socket multicast Điều thực cách gọi leaveGroup phương pháp () đóng () socket multicast / * Bước * / int port = 4444; int port = 4444; MulticastSocket ms = new MulticastSocket(port); MulticastSocket ms = new MulticastSocket (port); / * Bước hai * / String multicastAddress = "225.4.5.6"; MulticastAddress String = "225.4.5.6"; InetAddress ia = InetAddress.getByName(multicastAddress); InetAddress ia = InetAddress.getByName (multicastAddress); ms.joinGroup(ia); ms.joinGroup (ia); / * Bước ba * / DatagramPacket dp = new DatagramPacket(buffer, buffer.length); DatagramPacket dp = new DatagramPacket (buffer, buffer.length); ms.receive(dp); ms.receive (dp); byte[] data = dp.getData(); byte [] data = dp.getData (); / * Bước bốn * / ms.leaveGroup(ia); ms.leaveGroup (ia); ms.close(); ms.close (); Truyền gói tin multicast TTL - Time To Live TTL - Time To Live Chỉ định số router để vượt qua (hopcount) trước gói tin bị loại Mỗi định tuyến qua gói tin lượng giảm TTL Các gói tin với TTL không bị loại bỏ Đối với MulticastSockets (trong Java) giá trị mặc định TTL 1, có nghĩa tất gói tin lại mạng Tham số thay đổi setTimeToLive gọi () MulticastSocket Time To Live (TTL) Truyền gói tin multicast nhận gói liệu dễ dàng hơn, nhóm A không tham gia gói tin gửi Đây bước cần thiết để truyền tải gói tin multicast: Trong bước InetAddress cho quy định Multicast Group Địa IP tạo Bước xây dựng ổ cắm dategram multicast gói tin Điều lại gửi gói liệu ổ cắm multicast đóng socket / * Bước * / String multicastAddress = "225.4.5.6"; MulticastAddress String = "225.4.5.6"; InetAddress ia = InetAddress.getByName(multicastAddress); InetAddress ia = InetAddress.getByName (multicastAddress); / * Bước hai * / int port = 4444; int port = 4444; ms = new MulticastSocket(); ms = new MulticastSocket (); 27 Lập trình Java: Muticast hình ảnh Giảng viên hướng dẫn: Lê Đức Trị DatagramPacket dp = new DatagramPacket(imageData, imageData.length, DatagramPacket dp = new DatagramPacket (imageData, imageData.length, ia, port); ia, port); / * Bước ba * / ms.send(dp); ms.send (dp); ms.close(); ms.close (); Tạo Ảnh chụp hình Gửi ảnh chụp hình qua mạng thú vị cho khả để hiển thị thuyết trình nội dung hình cho người khác Tạo ảnh chụp hình Java ist dễ dàng Từ Java 1,3 lớp Robot có sẵn, mà cho possiblity để tạo screenshot Các createScreenCapture phương pháp () lớp Robot có hình chữ nhật mà xác định phần hình để chụp Trong trường hợp chúng tôi, luôn nắm bắt toàn hình Dưới nguồn gốc cho getScreenshot phương pháp () sử dụng để có ảnh chụp hình chương trình công getScreenshot BufferedImage tĩnh () ném AWTException, ImageFormatException, IOException { Bộ công cụ công cụ = Toolkit.getDefaultToolkit (); Kích thước screenSize = toolkit.getScreenSize (); Hình chữ nhật screenRect = new Rectangle (screenSize); Robot robot = new Robot (); BufferedImage hình = robot.createScreenCapture (screenRect); trở lại hình ảnh;} Đọc hình ảnh từ hệ thống tập tin Trong addintion để gửi ảnh chụp hình ứng dụng gửi hình ảnh lưu trữ hệ thống tập tin Các ứng dụng đọc định dạng ảnh JPEG từ thư mục theo thứ tự ngẫu nhiên công getRandomImageFromDir BufferedImage tĩnh (File dir) throws IOException {String [] hình ảnh = dir.list (mới ImageFileFilter ()); int ngẫu nhiên = new Random () nextInt (images.length) String FileName = dir.getAbsoluteFile () + File.separator + hình ảnh [ngẫu nhiên]; Tập tin imageFile = new File (tên tập tin); trở lại ImageIO.read (imageFile);} ImageFileFilter lớp thực FilenameFilter{ boolean chấp nhận (File dir, String name){ String nameLc = name.toLowerCase (); 28 Lập trình Java: Muticast hình ảnh Giảng viên hướng dẫn: Lê Đức Trị trở lại nameLc.endsWith (" jpg")? true : false; đúng: đúng;}} Các giới hạn 65507 byte enought cho hình ảnh nhỏ, ảnh chụp hình toàn hình không đầy đủ Nó quy mô xuống hình ảnh để chúng phù hợp với gói UDP điều làm cho hình ảnh khó xem Trong giải pháp chúng tôi, chia hình ảnh vào cách thích hợp khối có kích thước chuyển chúng qua mạng Như đề cập UDP người điều khiển giao thông xây dựng bên trong, phải chăm sóc cho Kiểm soát giao thông Để chắn hình ảnh truyền qua đường lát tập hợp lại theo thứ tự số tiêu đề thêm vào gói UDP Điều làm giảm lượng liệu chuyển giao gói tin, phải chấp nhận Người gửi định kích thước slize hình ảnh, sau gửi slice người qua mạng với tiêu đề bổ sung thông tin mô tả Theo thông tin đưa thông tin tiêu đề bổ sung thu hình ảnh xác định kích thước cuối hình ảnh, vị trí liệu hình ảnh thời tiết hình ảnh hoàn thành 29 Lập trình Java: Muticast hình ảnh Giảng viên hướng dẫn: Lê Đức Trị Đoạn mã người gửi hiển thị đây: while (true) { BufferedImage hình = getScreenshot (); hình = thu nhỏ (hình ảnh, scalingFactor); byte [] imageByteArray = bufferedImageToByteArray (hình ảnh, OUTPUT_FORMAT); gói int = (int) Math.ceil (imageByteArray.length / (float) DATAGRAM_MAX_SIZE); int HEADER_SIZE = 8; int MAX_PACKETS = 255; int session_start = 128; SESSION_END int = 64; if (gói> MAX_PACKETS) { System.out.println ("Hình ảnh lớn truyền đi!"); tiếp tục;} for (int i = 0; i imageByteArray.length? flags | SESSION_END : flags; cờ | SESSION_END: cờ; int size = (cờ&SESSION_END)!= SESSION_END? DATAGRAM_MAX_SIZE : imageByteArray.length - i * DATAGRAM_MAX_SIZE; DATAGRAM_MAX_SIZE: imageByteArray.length - i * DATAGRAM_MAX_SIZE; byte [] liệu = new byte [HEADER_SIZE + size]; liệu [0] = (byte) cờ; liệu [1] = (byte) sessionNumber; liệu [2] = (byte) gói tin; liệu [3] = (byte) (DATAGRAM_MAX_SIZE>> 8); liệu [4] = (byte) DATAGRAM_MAX_SIZE; liệu [5] = (byte) i; dữliệu[5]=(byte) i; data[6] = (byte)(size >> 8); liệu [6] = (byte) (kích thước>> 8); liệu [7] = (byte) kích thước; System.arraycopy (imageByteArray, i * DATAGRAM_MAX_SIZE, liệu, HEADER_SIZE, kích thước); sender.sendImage (dữ liệu, "225.4.5.6", 4444); if ((cờ & SESSION_END) == SESSION_END) break;} Thread.sleep (SLEEP_MILLIS); sessionNumber = sessionNumber [...]... thu hình ảnh có thể xác định kích thước cuối cùng của hình ảnh, vị trí của dữ liệu hình ảnh hiện tại và thời tiết hình ảnh được hoàn thành 29 Lập trình Java: Muticast hình ảnh Giảng viên hướng dẫn: Lê Đức Trị Đoạn mã người gửi được hiển thị dưới đây: while (true) { BufferedImage hình = getScreenshot (); hình = thu nhỏ (hình ảnh, scalingFactor); byte [] imageByteArray = bufferedImageToByteArray (hình ảnh, ... pixel Do vậy, việc truyền hình ảnh có thể cho phép méo dạng cho phép, các điểm ảnh có thể mất đi nhưng nhờ các thuật toán sửa lỗi sẽ phục hồi lại điểm anh 2 lân cạnh mà không mất tính khác biệt với ảnh gốc Giao thức UDP sẽ là giao thức lượt chọn hàng đầu trong truyền dẫn hình ảnh Trong một số truyền đặc biệt thì người ta dùng TCP truyền hình ảnh 11 Lập trình Java: Muticast hình ảnh Giảng viên hướng dẫn:... đã gửi xong dữ liệu Khi gửi thông báo xong usecase kết thúc 19 Lập trình Java: Muticast hình ảnh Giảng viên hướng dẫn: Lê Đức Trị Khi usecase này kết thúc thì usecase Listen Client Response hoạt động 3.2.3 Sơ đồ hoạt động 3.3 Phần Client 3.3.1 Các chức năng 3.3.2 Phân tích chức năng: - Send Client Info: 20 Lập trình Java: Muticast hình ảnh Giảng viên hướng dẫn: Lê Đức Trị Sau khi nhập địa chỉ ip server... sessionNumber = sessionNumber

Ngày đăng: 15/07/2016, 00:19

Mục lục

    Đọc các hình ảnh từ các hệ thống tập tin

    String FileName = dir.getAbsoluteFile () + File.separator + hình ảnh [ngẫu nhiên];

    Tập tin imageFile = new File (tên tập tin);

    ImageFileFilter lớp thực hiện FilenameFilter{

    boolean nào chấp nhận (File dir, String name){

    trở lại nameLc.endsWith (". jpg")? true : false; đúng: đúng;}}

    Kiểm soát giao thông

Tài liệu cùng người dùng

Tài liệu liên quan