2.3.1, Gói java.net
Cung cấp các lớp và các giao diện cho việc lập trình TCP hoặc UDP, trong chương trình sử dụng các lớp chính là :
• Đối với lập trình TCP sử dụng các lớp :
o java.net.ServerSocket; o java.net.Socket;
o java.net.SocketAddress;
• Đối với lập trình UDP sử dụng các lớp :
o java.net.DatagramPacket; o java.net.InetAddress; o java.net.MulticastSocket;
2.3.2, Gói java.io
Cung cấp các phương thức nhập xuất và thao tác với file. Sử dụng các lớp chính của gói java.io là :
• java.io.File; • java.io.FileInputStream; • java.io.FileOutputStream; • java.io.InputStreamReader; • java.io.OutputStreamWriter; 2.3.3, Gói java.util
Gói Java.util cung cấp một số lớp tiện ích Java, thường xuyên trong tất cả các loại chương trình ứng dụng. Nó bao gồm một số lớp sau:
• Hashtable • Random • Vector
• StringTokenizer
• java.util.ArrayList; • java.util.Hashtable; • java.util.LinkedList; • java.util.List; • java.util.Vector; • java.util.Iterator; • java.util.Queue; • java.util.Set; • java.util.Date; • java.util.Properties; 2.3.4, Gói java.text
Định dạng ngày tháng để ghi file log.Sử dụng các thành phần: • java.text.DateFormat;
• java.text.SimpleDateFormat;
2.3.5, Gói giao diện đồ họa javax.swings và java.awt
Sử dụng các thành phần để thiết kế giao diện đồ họa người dùng với các controls như buttons , label, checkbox, text area, text field, ....
2.3.6, Gói java.nio
Gói này chứa các buffer cung cấp các kỹ thuật lưu trữ dữ liệu ở dạng nguyên thủy trong bộ nhớ trong. Chương trình sử dụng các thành phần của gói java.nio là:
• java.nio.ByteBuffer;
• java.nio.charset.Charset;
• java.nio.charset.CharsetDecoder;
2.4, Xây dựng chương trình.
Chương trình được xây dựng thành 3 module chính : • ClientServer
• UDPServer • UDPClient
Trong đó module ClientServer được xây dựng làm thư viện dùng chung cho 2 module còn lại, module này sẽ đảm nhiệm vai trò thống nhất những quy ước của cả Client và Server trong việc truyền nhận dữ liệu.
2.4.1, ClientServer
Hình 2.9: Gói thư viện dùng chung ClientServer
ClientServer bao gồm 3 module con:
• ClientServer : gồm 2 class là : DinhNghia và GoiTin
o Class DinhNghia : Đảm nhiệm vai trò định nghĩa các thông báo lỗi và các biến dùng chung cho cả 2 giao thức truyền nhận dữ liệu TCP và UDP.
o Class GoiTin : Đảm nhiệm vai trò chuyển đổi dữ liệu thành các mảng byte để server truyền đi và chuyển các mảng byte đó thành dữ liệu đọc được khi Client nhận được
• tcpClientServer : Bao gồm 3 class dùng để xử lý quá trình gửi và nhận bằng giao thức TCP/IP cho cả Client và Server , nó chứa 3 class là :
o TCPSendAndReceive : Lớp dùng chung của cả Client và Server dùng để gửi nhận dữ liệu bằng giao thức TCP.
o TCPClient : Kế thừa từ lớp TCPSendAndReceive dùng để nhận dữ liệu. o TCPServer : Kế thừa từ lớp TCPSendAndReceive dùng để gửi dữ liệu. • udpClientServer : Bao gồm 3 class dùng để xử lý quá trình gửi và nhận
bằng giao thức UDP cho cả Client và Server , nó chứa 3 class là :
o UDPSendAndReceive : Lớp dùng chung của cả Client và Server dùng để gửi nhận dữ liệu bằng giao thức UDP.
o UDPClient : Kế thừa từ lớp UDPSendAndReceive dùng để nhận dữ liệu. o UDPServer : Kế thừa từ lớp UDPSendAndReceive dùng để gửi dữ liệu.
2.4.2, UDPClient
UDPClient bao gồm 3 module con: • udpClient: chứa 3 class :
o Class DinhNghia: class này định nghĩa các lỗi có thể xảy ra , đường dẫn file cấu hình và các file mặc định để hiển thị trên trình duyệt web.
o Class CauHinh: Class này đảm nhiệm vai trò lấy thông tin từ file config. o FrmMain: Cung cấp giao diện đồ họa cho Client.
• udpClien.SystemtrayIcon:
o SystemtrayIcon: Hiển thị một Icon của chương trình khi client khởi động.
• udpClien.Registry:
o KhoiDongCungHeThong: Khi hệ thống khởi động, chương trình Client sẽ được bật lên để lắng nghe thông tin từ Server gửi về.
2.4.3, UDPServer
UDPServer bao gồm 1 module con:
• Class DinhNghia : class này định nghĩa các lỗi có thể xảy ra , đường dẫn file cấu hình của server.
• Class CauHinh : Lấy các thông tin cấu hình của server .
• FrmMain : Cung cấp giao diện đồ họa cho server bao gồm các chức năng của Multicast như : CheckClient, gửi data, gửi time hiển thị , show các địa chỉ IP đang được lắng nghe.
• FrmSendTCP : Cung cấp giao diện đồ họa cho người sử dụng truyền dữ liệu đến các client ở dạng TCP (Unicast)
• FrmSending : Kiểm tra quá trình gửi file từ server xuống các client. • LogFile : Ghi nhật ký gửi của server vào 1 file log.
• ThongTinFile : Thiết lập thời gian hiển thị cho từng file khi được gửi xuống client.
• ThongTinHost : Kiểm tra khi nhận được 1 message được gửi từ host nào.
2.5. Giao diện của chương trình
Hình 2.13: Giao diện khi thêm dữ liệu
Hình 2.15: Giao diện của Client.
Hình 2.17: Giao diện gửi theo giao thức TCP
2.6. Tiểu kết
Sau khi phân tích các chức năng, vẽ các mô hình chức năng, mô hình tổng quát của chương trình, tìm hiểu về các gói trong ngôn ngữ lập trình Java được sử dụng trong việc xây dựng chương trình. Chúng ta tiến hành xây dựng 3 module: ClientServer, UDPServer, UDPClient và xây dựng được giao diện cho người sử dụng.
Như vậy sau khi đã hoàn thành chương trình, để biết được kết quả đạt được của chương trình thì mời mọi người xem chương III.
CHƯƠNG III: KẾT QUẢ ĐẠT ĐƯỢC 3.1. Kết quả đạt được
¾Server
• Kiểm tra được có bao nhiêu Client đang lắng nghe từ Server. • Gửi dữ liệu xuống các Client đang kết nối với Server.
• Gửi thời gian hiển thị cho từng file của Client. • Lưu thông tin các file đã gửi cho Client. ¾Client
• Nhận dữ liệu khi Server gửi xuống và lưu dữ liệu vào file receive. • Hiển thị dữ liệu khi nhận được thông báo hiển thị từ Server.
3.2 Kết quả thử nghiệm
Nhìn chung sau khi hoàn thiện đồ án chúng tôi đã đạt được những yêu cầu cơ bản của chương trình, sau khi thử nghiệm chương trình trên môi trường Window XP, Win 7 thì chương trình chạy ổn định.
Chúng tôi đã thử nghiệm chương trình trong mạng nội bộ (LAN), sử dụng mạng VNPT tốc độ 4mb.
3.2.1, Mạng LAN
¾ UDP gửi cho 2 Client
• 1 file 673mb gửi hết 141 phút 5 giây, như vậy tốc độ gửi file 81kb/s. • 4 file 248mb gửi hết 46 phút 21 giây, như vậy tốc độ gửi file 83kb/s. • 6 file 37.6mb gửi hết 8 phút 9 giây, như vậy tốc độ gửi file 79kb/s. • 38 file 12.4mb gửi hết 3 phút 45 giây, như vậy tốc độ gửi file 57kb/s. • 94 file 37.6mb gửi hết 10 phút 52 giây, như vậy tốc độ gửi file 58kb/s.
¾ UDP gửi cho 5 Client
• 1 file 673mb gửi hết 145 phút 18 giây, như vậy tốc độ gửi file 79kb/s. • 4 file 12.4mb gửi hết 3 phút 21 giây, như vậy tốc độ gửi file 73kb/s. • 6 flie 26.2mb gửi hết 6 phút 42 giây, như vậy tốc độ gửi file 70kb/s. • 38 file 43.2mb gửi hết 11 phút 21 giây, như vậy tốc độ gửi file 65kb/s. • 94 flie 37.6mb gửi hết 10 phút 32 giây, như vậy tốc độ gửi file 61kb/s.
Hình 3.1: Biểu đồ thể hiện tốc độ gửi dữ liệu trong cơ chế UDP
Kết quả biểu đồ thì chúng ta thấy được là tốc độ gửi file của cơ chế UDP là không cao, nó không bị ảnh hưởng bới số lượng Client kết nối, mà bị ảnh hưởng bởi tốc độ của các gói cước internet, ngoài ra nó cũng bị ảnh hưởng bởi số lượng file được gửi đi.
¾TCP
• 76 file 24.9mb gửi hết 2 phút 4 giây, như vậy tốc độ gửi file 206kb/s. • 38 file 12.4mb gửi hết 58 giây, như vậy tốc độ gửi file 219kb/s. • 24 file 150mb gửi hết 57 giây, như vậy tốc độ gửi file 2.63mb/s.
• 4 file 951mb gửi hết 2 phút 22 giây, như vậy tốc độ gửi file 6.7mb/s. • 3 file 153mb gửi hết 27 giây, như vậy tốc độ gửi file 5.67mb/s. • 1 file 150mb gửi hết 24 giây, như vậy tốc độ gửi file 6.25mb/s. • 1 file 977mb gửi hết 2 phút 24 giây, như vậy tốc độ gửi file 6.8mb/s.
Hình 3.2: Biểu đồ thể hiện tốc độ gửi dữ liệu trong cơ chế TCP
Tốc độ gửi file của cơ chế TCP là rất nhanh, và tuyệt đối an toàn, nhưng mỗi lần gửi file thì Server chỉ gửi cho được 1 Client, sau khi gửi xong Client này thì mới tiếp tục gửi file cho Client tiếp theo. Cơ chế gửi TCP cũng bị ảnh hưởng bởi tốc độ của đường chuyền internet và số lượng file.
Cập nhật thời gian hiển thị cho các Client rất nhanh với 1s là các Client nhận
được tín hiệu để hiển thị. Với cơ chế UDP trong quá trình truyền tải có xảy ra
thiếu file nhưng ngay sau đó đã được truyền lại bằng cơ chế TCP nên các Client nhận dữ liệu đầy đủ, không bị lỗi trong quá trình nhận và hiển thị dữ liệu tốt.
Tốc độ truyền dữ liệu trong cơ chế UDP tương đối chậm, với tốc độ trung bình trong quá trình test thử nghiệm vào khoảng 72kb/s, TCP 6mb/s. tốc độ gửi file bị ảnh hưởng bởi băng thông của mạng và không phụ thuộc vào cấu hình của máy
tính chạy chương trình, ngoài ra nó cũng bị ảnh hưởng bởi số lượng file được gửi đi.
3.2.2, Mạng Wireless
¾TCP
• 1 file 11.6mb gửi hết 5 giây, như vậy tốc độ gửi file 2.32mb/s. • 5 file 58.4 gửi hết 42 giây, như vậy tốc độ gửi file 1.39mb/s.
• 10 file 116mb gửi hết 2 phút 1 giây, như vậy tốc độ gửi file 0.96mb/s. • 15 file 175mb gửi hết 3 phút 13 giây, như vậy tốc độ gửi file 0.91mb/s. • 20 file 233mb gửi hết 3 phút 57 giây, như vậy tốc độ gửi file 0.98mb/s. • 25 file 292mb gửi hết 4 phút 46 giây, như vậy tốc độ gửi file 1.03mb/s.
Hình 3.3: Biểu đồ thể hiện tốc độ gửi dữ liệu số lượng file trong cơ chế
TCP
Biểu đồ thể hiện tốc độ gửi file trong mạng Wireless của cơ chế TCP, nhìn vào biểu đồ thì chúng ta biết được tốc độ gửi dữ liệu bị ảnh hưởng bở tốc độ của mạng và số lượng file được gửi đi.
• 1 file 151mb gửi hết 1 phút 42 giây, như vậy tốc độ gửi file 1.48mb/s. • 1 file 349mb gửi hết 3 phút 55 giây, như vậy tốc độ gửi file 1.49mb/s. • 1 file 638mb gửi hết 7 phút 13 giây, như vậy tốc độ gửi file 1.47mb/s. • 1 file 976mb gửi hết 11 phút 05 giây, như vậy tốc độ gửi file 1.48mb/s.
Hình 3.4: Biểu đồ thể hiện tốc độ gửi dữ liệu theo dung lượng trong cơ chế
TCP
Như vậy dựa vào biểu đồ chúng ta có thể thấy được tốc độ gửi file không bị ảnh hưởng bởi dung lượng, tốc độ gửi dữ liệu là tương đương nhau, ngoài ra nó cũng bị ảnh hưởng bởi tốc độ của mạng.
¾UDP
• 5 file 4.42mb gửi hết 1 phút 15 giây, như vậy tốc độ gửi file 60kb/s. • 10 file 8.85mb gửi hết 2 phút 43 giây, như vậy tốc độ gửi file 55kb/s. • 15 file 13.2mb gửi hết 4 phút 39 giây, như vậy tốc độ gửi file 48kb/s. • 20 file 17.7mb gửi hết 6 phút 37 giây, như vậy tốc độ gửi file 45kb/s.
Hình 3.5: tốc độ gửi file trong cơ chế UDP của mạng Wireless
Trong quá trình kiểm tra tốc độ gửi file, các file trong quá trình gửi UDP thì bị thiếu file, nhưng ngay sau đó đã được gửi đi bằng TCP, dữ liệu từ Server đến Client đã được đảm bảo an toán tuyệt đối, kết quả không bị ảnh hưởng, nhưng tốc độ bị ảnh hưởng bởi số lượng file và tốc độ mạng.
3.3. Kết quả chưa đạt được và hướng phát triển
Mặc dù đã hoàn thành được các chức năng cơ bản của đồ án nhưng đồ án vẫn còn mặt hạn chế trong phạm vi nhất định.
Hướng phát triển của đề tài là sử dụng công nghệ nhúng để hiển thị dữ liệu trên các panel hoặc bảng điện tử quảng cáo và cải tiến đồ án phục vụ cho nhiều mục đích khác nhau ngoài mục đích là quảng bá thông tin media qua mạng.
3.4. Tiểu kết
Như vậy chương trình “xây dựng hệ thống quảng bá thông tin media qua mạng” được xây dựng nhằm mục đích giúp các nhà quảng cáo quảng bá thông tin media đến với tất cả mọi người, chương trình này chỉ cần 1 người là có thể quản lý được.
Đề tài tập trung vào nghiên cứu về cách lập trình Unicast, Multicast. Sử dụng trình duyệt web để quảng bá thông tin media. Với yêu cầu chức năng ban đầu được đặt là truyền dữ liệu theo dạng Multicast hay có thể là Unicast từ Server đến Client và hiển thị trên trình duyệt web ở phía Client, người quản lý có thể cập nhật dữ liệu, hay thay đổi thời gian hiển thị của từng file, lưu các thông tin các file đã được gửi đi vào một file log để chúng ta có thể kiểm tra một file nào đó đã được gửi vào thời gian nào, địa chỉ máy là gì và tên của file đó. Chương trình đã đáp ứng được các yêu cầu ban đầu đã đăt ra. Điều này thấy rõ khi người quản lý muốn gửi 1 hoặc nhiều file có các định dạng như video, .tex, .doc, .gif, .mp3 xuống một nhóm các Client có chung một địa chỉ mạng 224.0.0.0 thì sau một khoảng thời gian nhất định nào đó tùy theo tốc độ của đường truyền. Sau đó người quản lý sẽ cập nhật thời gian hiển thị xuống cho nhóm Client dang lắng nghe, sau khi đã nhận được thông báo hiển thị thì phía Client sẽ hiển thị các dữ liệu được gửi xuống cùng với thời gian hiển thị. Nội dung sẽ được lập đi lập lại liên tục.
Hướng phát triển của đề tài là sử dụng công nghệ nhúng để hiển thị dữ liệu trên các panel hoặc bảng điện tử quảng cáo.
Thông qua việc nghiên cứu, đề tài đã cung cấp cho bản thân chúng tôi nhiều kiến thức mới về ngành công nghệ thông tin, để từ đó trong thời gian tới nếu có cơ hội sẽ tiếp tục nghiên cứu và gắn bó với ngành đang ngày càng có triển vọng này.
TÀI LIỆU THAM KHẢO TÀI LIỆU SÁCH
[1] LapTrinhMang-Java: TS. Lê Quốc Định, Trần Đăng Hoan, Khoa Công Nghệ Thông Tin Trường Đại học Hàng Hải.
[2] Giáo Trình Lập Trình Truyền Thông: Ngô Bá Hùng - Nguyễn Công Huy, Khoa Công Nghệ Thông Tin - Đại Học Cần Thơ.
[3] Giáo trình Lập Trình Mạng: Ths.Văn Thiên Hoàng trường đại học Kỹ Thuật Công Nghệ TPHCM.
TÀI LIỆU INTERNET
[4] http://vnexperts.khaigiang.vn/xem-tai-lieu-bai-giang-ky-thaut-lap-trinh- c-c-.1272.html [5] http://vntelecom.org/diendan/content.php?r=18-IP-Multicast-Group- security [6] http://ipv6.com/articles/general/Top-10-Features-that-make-IPv6- greater-than-IPv4-Part7.htm [7] http://yinyangit.wordpress.com/2011/06/07/networking-basic-concepts/ [8] Lập trình socket với TCP: http://www.ddth.com/showthread.php/32546-TUT-JAVA- L%E1%BA%ADp-tr%C3%ACnh-TCP-Socket?s= 9daf34fe7c23faa7428bde4c8906b7ab.
[9] Internet Programming with Java: Course:
http://www.nakov.com/inetjava/ lectures/part-1-sockets/InetJava-1.5- UDP-and-Multicast-Sockets.html
[10] http://it-tuts.com/java/y-nghia-cua-cac-package-trong-java.html
[11] Multicast in Java: http://www.roseindia.net/java/example/java/net/udp/ multicast.shtml
[12] Multicasting in Java:
http://www.javaspecialists.eu/archive/Issue028.html
[13] Multicasting Images with Java:http://www.fun2code.de/articles/ multicast_ images _java/ multicast_images_java.html
MỤC LỤC Trang phụ bìa Lời cám ơn Mục lục Danh mục viết tắt Danh mục bảng và hình PHẦN MỞ ĐẦU... 1
CHƯƠNG I: TỔNG QUAN ĐỀ TÀI ... 9
1.1 Tổng quan về lập trình mạng ... 9
1.1.1, Khái niệm lập trình mạng [1] ... 9
1.1.2, Phân loại mạng theo quy mô [1] ... 9
1.1.3 Giao Thức Mạng ... 10
1.1.3.1, Giao Thức TCP/IP [4] ... 10
1.1.3.2, Giao thức TCP và UDP [ 4 ] ... 12
1.1.4, Giao tiếp theo mô hình khách/chủ (Client/Server) [ 4 ] ... 13