[Docx vn] Xay Dung Chuong Trinh Chat Room Client server Bang Socket Trong Java TRƢỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN MẠNG VÀ TRUYỀN THÔNG ĐỒ ÁN MÔN HỌC LẬP TRÌNH MẠNG MÁY[.]
TRƢỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN MẠNG VÀ TRUYỀN THÔNG ĐỒ ÁN MÔN HỌC LẬP TRÌNH MẠNG MÁY TÍNH ĐỀ TÀI Sử dụng Socket Java xây dựng chƣơng trình CHAT Room theo mơ hình Client-Server GVHD : TRẦN HỒ THỦY TIÊN Sinh viên : Trần Anh Tuấn Lớp : 06T3 Nhóm : 09B Đà Nẵng 2011 Đồ Án Lập Trình Mạng GVHD : Trần Hồ Thủy Tiên MỤC LỤC MỤC LỤC DANH MỤC HÌNH .3 TỔNG QUAN VỀ ĐỀ TÀI Chƣơng CƠ SỞ LÝ THUYẾT 1.1 Giao thức TCP/IP 1.1.1 Giao thức IP(Internet Protocol - Giao thức Liên mạng) .5 1.1.2 Giao thức TCP(Transmission Control Protocol - "Giao thức điều khiển truyền vận") .7 1.2 Mơ hình Client/Server 1.3 Cơ chế Socket Java 10 1.3.1 Khái quát Socket 10 1.3.2 Cơ chế Socket 10 1.3.3 Mơ hình truyền tin socket 11 1.3.4 Một số hàm socket 14 Chƣơng THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG 17 2.1 Phân tích yêu cầu 17 2.2 Phân tích chức .17 2.3 Thiết kế kế chƣơng trình .18 2.3.1 Thiết kế giao diện .18 2.3.2 Xây dựng chức 19 Chƣơng TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ 20 3.1 Môi trƣờng triển khai 20 3.2 Kết chức chƣơng trình 20 KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN 23 NHỮNG KẾT QUẢ ĐẠT ĐƢỢC 23 NHỮNG VẤN ĐỀ TỒN TẠI 23 HƢỚNG PHÁT TRIỂN 23 PHỤ LỤC 24 CHƢƠNG TRÌNH SERVER: 24 1.1 Chatserver class: 24 1.2 serverSocket class: 27 CHƢƠNG TRÌNH CLIENT 30 2.1 Client class: 30 2.2 ClientLogin class: 38 2.3 clientSocket 44 TÀI LIỆU THAM KHẢO 49 Sinh Viên: Trần Anh Tuấn - Lớp 06t3 Đồ Án Lập Trình Mạng GVHD : Trần Hồ Thủy Tiên DANH MỤC HÌNH Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình Hình 1: Sơ đồ TCP/IP : Cấu trúc Header IP : Cấu trúc header cua TCP : Mơ hình client/server : Client gửi yêu cầu kết nối tới Server 11 : Server đồng ý kết nối tiếp tục lắng nghe 11 : Mơ hình truyền tin socket 12 : Mơ hình tƣơng tác client/server qua socket TCP 13 : Ví dụ chƣơng trình socket TCP 15 10 : Ví dụ chƣơng trình socket TCP 16 11: Giao diện login 18 12: Giao diện Chat room 18 13 : Kết nối lỗi Server chƣa chạy 20 14 : Chạy chƣơng trình server 20 15 : Login thành cơng vào phịng Chat 21 16 : Thử nghiệm Chat private 22 17 : Hiển thị thông báo login logout Server 22 Sinh Viên: Trần Anh Tuấn - Lớp 06t3 Đồ Án Lập Trình Mạng GVHD : Trần Hồ Thủy Tiên TỔNG QUAN VỀ ĐỀ TÀI Bối cảnh lý thực đề tài Ngày nay, nhu cầu công nghệ thông tin đời sống đa dạng Việc mở rộng hệ thống truyền thông ngày có nhiều máy vi tính kết nối vào mạng Internet Với việc ứng dụng giao thức TCP/IP làm cho hệ thống mạng ngày rộng phát triển vƣợt bật Vấn đề đề an ninh, bảo mật,…là mạnh giao thức đem lại cho công nghệ truyền thông Bên cạnh việc phát triển thƣ điện tử nhiều dịch vụ khác nhau(gmail, yahoo,MSM mạng điện thoại di động…), việc CHAT trực tuyến gửi flie trực tiếp Internet nhu cầu khơng thể thiếu Với thực tế nhƣ vậy, nhóm chúng em nghiên cứu xây dựng mơ hình CHAT truyền file mạng LAN Phƣơng pháp triển khai đề tài Ngơn ngữ lập trình : Java Chƣơng trình soạn thảo build : NetBeans IDE Sử dụng Giao thức TCP/IP Sử dụng Socket Java Kết cấu đồ án Gồm ba chƣơng: Chƣơng 1: Cơ sở lý thuyết Chƣơng 2: Thiết kế xây dựng hệ thống Chƣơng 3: Triển khai đánh giá kết Sinh Viên: Trần Anh Tuấn - Lớp 06t3 Đồ Án Lập Trình Mạng GVHD : Trần Hồ Thủy Tiên Chƣơng CƠ SỞ LÝ THUYẾT 1.1 Giao thức TCP/IP TCP/IP tên chung cho tập hợp 100 giao thức đƣợc sử dụng để kết nối máy tính vào mạng, hai giao thức TCP (Transmission Control Protocol) IP (Internet Protocol) Trong phạm vi Internet, thông tin không đƣợc truyền tải nhƣ dịng riêng biệt từ máy tính tới máy tính khác Thay vào đó, liệu đƣợc chia thành gói nhỏ gọi packet Các packet đƣợc gửi mạng máy tính Cơng việc IP chuyển chúng đến máy tính xa Tại trạm cuối, TCP nhận packet kiểm tra lỗi Nếu lỗi xuất hiện, TCP yêu cầu gói riêng biệt phải đƣợc gửi lại Chỉ tất packet nhận đƣợc đúng, TCP sử dụng số thứ tự để tạo lại thông tin ban đầu Hình 1: Sơ đồ TCP/IP 1.1.1 Giao thức IP(Internet Protocol - Giao thức Liên mạng) Là giao thức hƣớng liệu đƣợc sử dụng máy chủ nguồn đích để truyền liệu liên mạng chuyển mạch gói Dữ liệu liên mạng IP đƣợc gửi theo khối đƣợc gọi gói (packet datagram) Cụ thể, IP khơng cần thiết lập đƣờng truyền trƣớc máy chủ gửi gói tin cho máy khác mà trƣớc chƣa liên lạc với Giao thức IP cung cấp dịch vụ gửi liệu không đảm bảo (cịn gọi cố gắng cao nhất), nghĩa hầu nhƣ khơng đảm bảo gói liệu Sinh Viên: Trần Anh Tuấn - Lớp 06t3 Đồ Án Lập Trình Mạng GVHD : Trần Hồ Thủy Tiên Gói liệu đến nơi mà khơng cịn ngun vẹn, đến khơng theo thứ tự (so với gói khác đƣợc gửi hai máy nguồn đích đó), bị trùng lặp bị hoàn toàn Nếu phần mềm ứng dụng cần đƣợc bảo đảm, đƣợc cung cấp từ nơi khác, thƣờng từ giao thức giao vận nằm phía IP Các thiết bị định tuyến liên mạng chuyển tiếp gói tin IP qua mạng tầng liên kết liệu đƣợc kết nối với Việc khơng có đảm bảo gửi liệu có nghĩa chuyển mạch gói có thiết kế đơn giản (Lƣu ý mạng bỏ gói tin, làm đổi thứ tự làm hỏng nhiều gói tin, ngƣời dùng thấy hoạt động mạng trở nên Hầu hết thành phần mạng cố gắng tránh để xảy tình trạng Đó lý giao thức đƣợc gọi cố gắng cao Tuy nhiên, lỗi xảy khơng thƣờng xun khơng có hiệu đủ xấu đến mức ngƣời dùng nhận thấy đƣợc.) Giao thức IP thông dụng mạng Internet công cộng ngày Giao thức tầng mạng thông dụng ngày IPv4; giao thức IP phiên IPv6 đƣợc đề nghị IPv4: Internet hết dần địa IPv4, IPv4 sử dụng 32 bit để đánh địa (tạo đƣợc khoảng tỷ địa chỉ); IPv6 dùng địa 128 bit, cung cấp tối đa khoảng 3.4×1038 địa Các phiên từ đến bị hạn chế, không đƣợc sử dụng Phiên đƣợc dùng làm giao thức dịng (stream) thử nghiệm Cịn có phiên khác, nhƣng chúng thƣờng dành giao thức thử nghiệm không đƣợc sử dụng rộng rãi Địa IP đƣợc chia thành số giới hạn từ - 255 Mỗi số đƣợc lƣu byte - > IP có kích thƣớc 4byte, đƣợc chia thành lớp địa Có lớp A, B, C Nếu lớp A, ta có 16 triệu điạ chỉ, lớp B có 65536 địa Ví dụ: Ở lớp B có tất địa từ 132.25.0.0 đến 132.25.255.255 Phần lớn địa lớp A sở hữu công ty hay tổ chức Một ISP thƣờng sở hữu vài địa lớp B C Ví dụ: Nếu địa IP bạn 132.25.23.24 bạn xác định ISP bạn (có IP 132.25.x.) Sinh Viên: Trần Anh Tuấn - Lớp 06t3 Đồ Án Lập Trình Mạng GVHD : Trần Hồ Thủy Tiên Hình : Cấu trúc Header IP 1.1.2 Giao thức TCP(Transmission Control Protocol - "Giao thức điều khiển truyền vận") Là giao thức cốt lõi giao thức TCP/IP Sử dụng TCP, ứng dụng máy chủ đƣợc nối mạng tạo "kết nối" với nhau, mà qua chúng trao đổi liệu gói tin Giao thức đảm bảo chuyển giao liệu tới nơi nhận cách đáng tin cậy thứ tự TCP phân biệt liệu nhiều ứng dụng (chẳng hạn, dịch vụ Web dịch vụ thƣ điện tử) đồng thời chạy máy chủ TCP hỗ trợ nhiều giao thức ứng dụng phổ biến Internet ứng dụng kết quả, có WWW, thƣ điện tử Secure Shell Trong giao thức TCP/IP, TCP tầng trung gian giao thức IP bên dƣới ứng dụng bên Các ứng dụng thƣờng cần kết nối đáng tin cậy kiểu đƣờng ống để liên lạc với nhau, đó, giao thức IP khơng cung cấp dịng kiểu đó, mà cung cấp dịch vụ chuyển gói tin khơng đáng tin cậy TCP làm nhiệm vụ tầng giao vận mơ hình OSI đơn giản mạng máy tính Các ứng dụng gửi dòng gồm byte 8-bit tới TCP để chuyển qua mạng TCP phân chia dòng byte thành đoạn (segment) có kích thƣớc thích hợp (thƣờng đƣợc định dựa theo kích thƣớc đơn vị truyền dẫn tối đa (MTU) tầng liên kết liệu mạng mà máy tính nằm đó) Sau đó, TCP chuyển gói tin thu đƣợc tới giao thức IP để gửi qua liên mạng tới mơ đun TCP máy tính đích TCP kiểm tra để đảm bảo khơng có gói tin bị thất lạc cách gán cho gói tin "số thứ tự" (sequence number) Số thứ tự đƣợc sử dụng để đảm bảo liệu đƣợc trao cho ứng dụng đích theo thứ tự Mô đun TCP đầu gửi lại "tin Sinh Viên: Trần Anh Tuấn - Lớp 06t3 Đồ Án Lập Trình Mạng GVHD : Trần Hồ Thủy Tiên báo nhận" (acknowledgement) cho gói tin nhận đƣợc thành công; "đồng hồ" (timer) nơi gửi báo time-out không nhận đƣợc tin báo nhận khoảng thời gian round-trip time (RTT), liệu (đƣợc coi bị thất lạc) đƣợc gửi lại TCP sử dụng checksum (giá trị kiểm tra) để xem có byte bị hỏng q trình truyền hay khơng; giá trị đƣợc tính tốn cho khối liệu nơi gửi trƣớc đƣợc gửi, đƣợc kiểm tra nơi nhận Hình : Cấu trúc header cua TCP 1.2 Mơ hình Client/Server Mơ hình đƣợc phổ biến đƣợc chấp nhận rộng rãi hệ thống phân tán mơ hình client/server Trong mơ hình có tập tiến trình mà tiến trình đóng vai trị nhƣ trình quản lý tài nguyên cho tập hợp tài nguyên cho trƣớc tập hợp tiến trình client tiến trình thực tác vụ cần truy xuất tới tài nguyên phần cứng phần mềm dùng chung Bản thân trình quản lý tài nguyên cần phải truy xuất tới tài nguyên dùng chung đƣợc quản lý tiến trình khác, số tiến trình vừa tiến trình client vừa tiến trình server Các tiến trình phát yêu cầu tới server chúng cần truy xuất tới tài nguyên server Nếu yêu cầu đắn server thực hành động đƣợc yêu cầu gửi đáp ứng trả lời tới tiến trình client Mơ hình client/server cung cấp cách tiếp cận tổng quát để chia sẻ tài ngun hệ thống phân tán Mơ hình đƣợc cài đặt nhiều mơi trƣờng phần cứng phần mềm khác Các máy tính đƣợc sử dụng để chạy tiến trình client/server có nhiều kiểu khác khơng cần thiết phải phân biệt chúng; tiến trình client tiến trình server chạy máy tính Một tiến trình server sử dụng dịch vụ server khác Mơ hình truyền tin client/server hƣớng tới việc cung cấp dịch vụ Quá trình trao đổi liệu bao gồm: Truyền yêu cầu từ tiến trình client tới tiến trình server Sinh Viên: Trần Anh Tuấn - Lớp 06t3 Đồ Án Lập Trình Mạng GVHD : Trần Hồ Thủy Tiên Yêu cầu đƣợc server xử lý Truyền đáp ứng cho client Mơ hình truyền tin liên quan đến việc truyền hai thơng điệp dạng đồng hóa cụ thể client server Tiến trình server phải nhận thức đƣợc thông điệp đƣợc yêu cầu bƣớc đến hành động phát yêu cầu client phải đƣợc tạm dừng (bị phong tỏa) buộc tiến trình client trạng thái chờ cho tớ nhận đƣợc đáp ứng server gửi bƣớc ba Mơ hình client/server thƣờng đƣợc cài đặt dựa thao tác gửi (send) nhận (receive) Hình : Mơ hình client/server Q trình giao tiếp client server diễn theo hai chế độ: bị phong tỏa (blocked) không bị phong tỏa (non-blocked) Chế độ bị phong tỏa (blocked): Trong chế độ bị phong tỏa, tiến trình client server phát lệnh gửi liệu (send), việc thực thi tiến trình bị tạm ngừng tiến trình nhận phát lệnh nhận liệu (receive) Tƣơng tự tiến trình nhận liệu, tiến trình (client server) phát lệnh nhận liệu, mà thời điểm chƣa có liệu Sinh Viên: Trần Anh Tuấn - Lớp 06t3 Đồ Án Lập Trình Mạng GVHD : Trần Hồ Thủy Tiên gửi tới việc thực thi tiến trình bị tạm ngừng có liệu gửi tới Chế độ không bị phong tỏa (non-blocked) Trong chế độ này, tiến trình client hay server phát lệnh gửi liệu thực sự, việc thực thi tiến trình đƣợc tiến hành mà khơng quan tâm đến việc có tiến trình phát lệnh nhận liệu hay khơng Tƣơng tự cho trƣờng hợp nhận liệu, tiến trình phát lệnh nhận liệu, nhận liệu có, việc thực thi tiến trình đƣợc tiến hành mà khơng quan tâm đến việc có tiến trình phát lệnh gửi liệu hay không 1.3 Cơ chế Socket Java 1.3.1 Khái quát Socket Nhƣ biết kết nối URLs URL cung cấp cho cấu để truy xuất vào tài nguyên Internet mức tƣơng đối cao, nhƣng đơi chƣơng trình lại yêu cầu giao tiếp tầng mạng mức thấp.Ví dụ viết ứng dụng client-server Trong ứng dụng client-server phía server cung cấp số dịch vụ, nhƣ: xử lí sở liệu, yêu cầu bên phía client đƣa ra, sau gửi lại cho phía client Sự giao tiếp nhƣ gọi tin cậy liệu không bị mát, sai lệch trình truyền, server gửi cho client thơng điệp phía client nhận đƣợc thơng điệp ngun nhƣ Giao thức TCP cung cấp cho cách thức truyền tin cậy Để nói chuyện đƣợc TCP chƣơng trình client chƣơng trình server phải thiếp lập đƣờng truyền, chƣơng trình phải kết nối lại với socket điểm cuối để kết nối, client server muốn nói chuyện với phải thơng qua socket, thơng điệp phải qua socket Chúng ta mƣờng tƣợng socket cửa ngƣời muốn hay vào phải thông qua cửa 1.3.2 Cơ chế Socket Một socket điểm cuối thông tin hai chiều liên kết hai chƣơng trình chạy mạng Những lớp socket đƣợc dùng để đại diện cho kết nối chƣơng trình client chƣơng trình server Trong Java gói Java.net cung cấp hai lớp Socket ServerSocket để thực kết nối client server Thông thƣờng server chạy máy đặc biệt có socket giới hạn Portnumber đặc biệt Phía client: client đƣợc biết hostname máy mà server chạy port number mà server lắng nghe Để tạo yêu cầu kết nối client Sinh Viên: Trần Anh Tuấn - Lớp 06t3 10