Tìm hiểu lập trình socket TCP trong java và ứng dụng truyền file qua mạng

57 20 0
Tìm hiểu lập trình socket TCP trong java và ứng dụng truyền file qua mạng

Đ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

Đồ án tốt nghiệp ngành CNTT Truyền file qua mạng dựa Socket TCP LỜI CẢM ƠN Lời em xin bày tỏ lòng biết ơn chân thành tới thầy giáo Ths Phùng Anh Tuấn - giảng viên khoa CNTT trường ĐHDL Hải Phòng, người thầy trực tiếp giảng dậy tận tình giúp đỡ, bảo em xuốt thời gian qua Cảm ơn thầy động viên, hướng dẫn, định hướng truyền thụ cho em kiến thức vô quý báu để em hồn thành luận án tốt nghiệp Em xin chân thành cảm ơn thầy giáo, cô giáo trường ĐHDL Hải Phòng đặc biệt thầy cô môn tin học, người không ngừng truyền đạt cho chúng em kiến thức quý báu học tập tập sống xuốt bốn năm học vừa qua Và cuối cùng, hết em muốn bày tỏ lòng biết ơn sâu sắc tới gia đình, bố mẹ, anh chị em tất bạn bè em, người bên động viên, cổ vũ giúp đỡ em học tập sống Dưới em tìm hiểu nghiên cứu thời gian qua Do tính thực tế kiến thức cịn hạn chế, em mong nhận bảo cảu thầy cô giáo tham gia đóng góp ý kiến bạn để em hồn thành tốt đề tài Một lần em xin chân thành cảm ơn ! Hải phòng, ngày….tháng ….năm 2009 Sinh viên Phạm Hồng Thư Sinh viên thực hiện: Phạm Hồng Thư Lớp : CT902 Trang Đồ án tốt nghiệp ngành CNTT Truyền file qua mạng dựa Socket TCP MỤC LỤC LỜI CẢM ƠN MỤC LỤC LỜI NÓI ĐẦU CHƯƠNG 1: CĂN BẢN VỀ MẠNG MÁY TÍNH 1.1 Định nghĩa mạng máy tính 1.2 Nhu cầu phát triển mạng máy tính 1.3 Phân loại mạng máy tính 1.4 Một số topo mạng thông dụng 10 1.5 Giao thức mạng .11 1.5.1 Giao thức TCP 11 1.5.2 Giao thức UDP 12 1.6 Các mơ hình hoạt động mạng máy tính 14 1.6.1 Mô hình hoạt động peer to peer 15 1.6.2 Mơ hình hoạt động clients/ server 15 CHƯƠNG 2: CĂN BẢN VỀ NGƠN NGỮ LẬP TRÌNH JAVA 17 2.1 Giới thiệu Java 17 2.2 Một số tính chất ngôn ngữ Java .17 2.2.1 Đơn giản 18 2.2.2 Hƣớng đối tƣợng 18 2.2.3 Độc lập phần cứng hệ điều hành 18 2.2.4 Mạnh mẽ 19 2.2.5 Bảo mật 19 2.2.6 Phân tán 20 2.2.7 Đa luồng 20 2.2.8 Linh động 20 2.3 Các dạng chƣơng trình ứng dụng Java 20 2.3.1 Chƣơng trình ứng dụng độc lập (Application) 20 2.3.2 Chƣơng trình ứng dụng nhúng(Applet) 21 2.3.3 Chƣơng trình ứng dụng dạng lai ghép 22 2.4 Cấu trúc tệp chƣơng trình Java .22 CHƯƠNG 3: LẬP TRÌNH SOCKET TRONG JAVA 24 3.1 Khái niệm Socket .24 3.1.1 Lịch sử hình thành 24 3.1.2 Nguyên lý hoạt động 31 Sinh viên thực hiện: Phạm Hồng Thư Lớp : CT902 Trang Đồ án tốt nghiệp ngành CNTT Truyền file qua mạng dựa Socket TCP 3.2 Socket Java 34 3.2.1 Lớp Java.net.Socket 34 3.2.2 Chƣơng trình TCPEchoClient 35 3.3 Một số lớp lập trình Java Socket 37 CHƯƠNG 4: XÂY DỰNG CHƯƠNG TRÌNH ỨNG DỤNG 38 4.1 Giới thiệu 38 4.2 Phân tích chƣơng trình 39 4.3 Cơ chế hoạt động chƣơng trình 40 4.4 Giao diện chƣơng trình 42 4.4.1 Giao diện phía Server 42 4.4.2 Giao diện phía Client 43 4.5 Nhận xét 45 KẾT LUẬN 46 Tài liệu tham khảo 47 Tài liệu tiếng Việt 47 Tài liệu tiếng Anh 47 Tài liệu khác 47 Phụ lục 48 Mã nguồn chƣơng trình ứng dụng 48 Mã nguồn chương chình phía Server 48 Mã nguồn phía Clients 52 Sinh viên thực hiện: Phạm Hồng Thư Lớp : CT902 Trang Đồ án tốt nghiệp ngành CNTT Truyền file qua mạng dựa Socket TCP LỜI NÓI ĐẦU Hiện vấn đề tồn cầu hố thơng tin tốc độ phát triển khoa học công nghệ diễn cách nhanh chóng, kỷ nguyên mở ra; kỷ ngun xã hội hóa thơng tin Công nghệ thông tin truyền thông phát triển đưa giới chuyển sang thời đại thời đại công nghệ thông tin Việc nắm bắt ứng dụng Công nghệ thông tin lĩnh vực khoa học, kinh tế, xã hội đem lại cho doanh nghiệp tổ chức thành tựu lợi ích to lớn Máy tính trở thành công cụ đắc lực thiếu người Các tổ chức, công ty hay quan cần phải xây dựng hệ thống mạng máy tính cho riêng để trao đổi liệu phận Dữ liệu truyền mạng phải đảm bảo: liệu chuyển tới đích nhanh chóng đắn Hầu hết liệu truyền qua mạng truyền dạng file Nhằm tìm hiểu thấu đáo số phương pháp truyền file qua mạng em chọn đề tài "Tìm hiểu lập trình Socket TCP Java ứng dụng truyền file qua mạng" Với lập trình socket TCP bắt buộc máy phải nối mạng với Ta thấy máy muốn trao đổi liệu qua mạng, chúng tạo phía socket trao đổi liệu cách đọc/ghi từ socket Khi chương trình tạo socket, định danh dạng số (định danh dạng số gọi số hiệu cổng) gán cho socket Việc gán số hiệu cổng cho socket thực chương trình hệ điều hành Trong gói tin mà socket gửi có chứa hai thơng tin để xác định đích đến gói tin: + Một địa mạng để xác định hệ thống nhận gói tin + Một số định danh cổng để nói cho hệ thống đích biết socket nhận liệu Sinh viên thực hiện: Phạm Hồng Thư Lớp : CT902 Trang Đồ án tốt nghiệp ngành CNTT Truyền file qua mạng dựa Socket TCP Nội dung đồ án tốt cố gắng làm rõ lập trình socket TCP xây dựng chương trình ứng minh họa truyền file qua mạng ngôn ngữ lập trình Java Đề tài gồm phần mở đầu, bốn chƣơng kết luận Chƣơng 1: Trình bầy kiến thức mạng máy tính : định nghĩa, phân loại, loại giao thức mạng, mơ hình hoạt động mạng máy tính Chƣơng 2: Giới thiệu Java, tính chất, dạng chương trình ứng dụng Java, cấu trúc tệp chương trình Java Chƣơng 3: Khái niệm socket, socket java số lớp lập trình java socket Chƣơng 4: Xây dựng chương trình ứng dụng truyền file qua mạng: Mơ hình số giao diện chương trình phía server phía client Tiếp theo kết luận, phụ lục tài liệu tham khảo Sinh viên thực hiện: Phạm Hồng Thư Lớp : CT902 Trang Đồ án tốt nghiệp ngành CNTT Truyền file qua mạng dựa Socket TCP CHƢƠNG 1: CĂN BẢN VỀ MẠNG MÁY TÍNH 1.1 Định nghĩa mạng máy tính Mạng máy tính tập hợp máy tính nối với đường truyền theo cấu trúc thơng qua máy tính trao đổi thơng tin qua lại cho Đường truyền hệ thống thiết bị truyền dẫn có dây hay khơng dây dùng để chuyển tín hiệu điện tử từ máy tính đến máy tính khác Các tín hiệu điện tử biểu thị giá trị liệu dạng xung nhị phân (on off) Tất tín hiệu truyền máy tính thuộc dạng sóng điện từ Tùy theo tần số sóng điện từ dùng đường truyền vật lý khác để truyền tín hiệu Ở đường truyền kết nối dây cáp đồng trục, cáp xoắn, cáp quang, dây điện thoại, sóng vơ tuyến Các đường truyền liệu tạo nên cấu trúc mạng Hai khái niệm đường truyền cấu trúc đặc trưng mạng máy tính Hình 1.1- Một mơ hình máy tính liên kết mạng 1.2 Nhu cầu phát triển mạng máy tính Sinh viên thực hiện: Phạm Hồng Thư Lớp : CT902 Trang Đồ án tốt nghiệp ngành CNTT Truyền file qua mạng dựa Socket TCP Ngày nay, máy tính sử dụng cách rộng rãi số lượng máy tính văn phịng hay quan tăng lên nhanh chóng việc kết nối chúng trở nên vô cần thiết mang lại nhiều hiệu cho người sử dụng Với lượng lớn thông tin, nhu cầu xử lý thông tin ngày cao, mạng máy tính trở nên quen thuộc lĩnh vực như: khoa học, quân sự, quốc phòng, thương mại, dịch vụ, giáo dục Người ta thấy việc kết nối máy tính thành mạng cho khả to lớn như: - Sử dụng chung tài nguyên: tài nguyên (như thiết bị, chương trình, liệu) trở thành tài nguyên chung thành viên mạng tiếp cận mà không quan tâm tới tài nguyên đâu - Tăng độ tin cậy hệ thống: người ta dễ dàng bảo trì máy móc, lưu trữ (backup) liệu chung có trục trặc hệ thống chúng khơi phục nhanh chóng Trong trường hợp có trục trặc trạm làm việc người ta sử dụng trạm khác thay - Nâng cao chất lượng hiệu khai thác thơng tin: thơng tin sử dụng chung mang lại cho người sử dụng khả tổ chức lại công việc với thay đổi chất như: + Ðáp ứng nhu cầu hệ thống ứng dụng kinh doanh đại + Cung cấp thống liệu + Tăng cường lực xử lý nhờ kết hợp phận phân tán + Tăng cường truy nhập tới dịch vụ mạng khác cung cấp giới Với nhu cầu đòi hỏi ngày cao xã hội nên vấn đề kỹ thuật mạng mối quan tâm hàng đầu nhà tin học Ví dụ làm để truy xuất thơng tin cách nhanh chóng tối ưu, việc xử lý thông tin mạng nhiều, đơi làm tắc nghẽn gây thông tin cách đáng tiếc Hiện nay, việc có hệ thống mạng chạy thật tốt, thật an tồn với lợi ích kinh tế cao quan tâm 1.3 Phân loại mạng máy tính Sinh viên thực hiện: Phạm Hồng Thư Lớp : CT902 Trang Đồ án tốt nghiệp ngành CNTT Truyền file qua mạng dựa Socket TCP Do mạng máy tính phát triển khắp nơi với ứng dụng ngày đa dạng việc phân loại mạng máy tính việc phức tạp Dựa theo phạm vi phân bố mạng ta phân loại mạng sau: - Mạng cục LAN (Local Area Network): Mạng LAN nhóm máy tính thiết bị truyền thơng mạng nối kết với khu vực nhỏ tịa nhà cao ốc, khn viên trường đại học, khu giải trí… Các mạng LAN thường có đặc điểm sau: + Băng thơng lớn, có khả chạy ứng dụng trực tuyến xem phim, hội thảo qua mạng + Kích thước mạng bị giới hạn thiết bị + Chi phí thiết bị mạng LAN tương đối rẻ + Quản trị đơn giản Hình 1.2- Mơ hình mạng cục LAN - Mạng đô thị MAN (Metropolitan Area Network): Mạng MAN gần giống mạng LAN giới hạn thành phố hay quốc gia Mạng MAN nối kết mạng LAN lạ với thông qua phương tiện truyền dẫn khác (cáp quang, cáp đồng, sóng….) phương thức truyền thông khác Đặc điểm mạng MAN: Sinh viên thực hiện: Phạm Hồng Thư Lớp : CT902 Trang Đồ án tốt nghiệp ngành CNTT Truyền file qua mạng dựa Socket TCP + Băng thơng mức trung bình, đủ để phục vụ ứng dụng cấp thành phố hay quốc gia phủ điện tử, thương mại điện tử, ứng dụng ngân hàng… + Do MAN nối kết nhiều LAN với nên độ phức tạp tăng đồng thời cơng tác quản trị khó khăn + Chi phí thiết bị mạng MAN tương đối đắt tiền - Mạng diện rộng WAN (Wide Area Network): Mạng WAN bao phủ vùng địa lý rộng lớn quốc gia, lục địa hay toàn cầu Mạng WAN thường mạng công ty đa quốc gia hay tồn cầu, điển hình mạng internet Do phạm vi rộng lớn mạng WAN nên thông thường mạng WAN tập hợp mạng LAN, WAN nối lại với phương tiện như: vệ tinh (satellites), sóng biva (microwave), cáp quang, cáp điện thoại Đặc điểm mạng WAN: + Băng thông thấp, dễ kết nối, thường phù hơp với ứng dụng offine e-mail, web, ftp… + Phạm vi hoạt động rộng lớn không giới hạn + Do kết nối nhiều LAN, WAN lại với nên mạng phức tạp có tính tồn cầu nên thường có tổ chức quốc tế đứng quản trị + Chi phí cho thiết bị cơng nghệ mạng WAN đắt tiền Hình 1.3- Mơ hình mạng diện rộng(WAN) - Mạng Internet: Là trường hợp đặc biệt mạng WAN, cung cấp dịch vụ tồn cầu mail, web, chat, ftp phục vụ miễn phí cho người Sinh viên thực hiện: Phạm Hồng Thư Lớp : CT902 Trang Đồ án tốt nghiệp ngành CNTT Truyền file qua mạng dựa Socket TCP 1.4 Một số topo mạng thông dụng Theo định nghĩa mạng máy tính, máy tính nối với đường truyền vật lý theo kiến trúc đó, kiến trúc gọi Topology Thơng thường mạng có ba loại kiến trúc là: mạng hình (Star Topology), mạng dạng tuyến (Bus Topology), mạng dạng vòng(Ring Topology) - Ring Topology: Mạng bố trí vịng trịn, đường dây cáp thiết kế làm thành vịng khép kín, tín hiệu chạy theo chiều Các nút truyền tín hiệu cho thời điểm nút mà Mạng dạng vịng có thuận lợi nới rộng xa đường dây phải khép kín, bị ngắt nơi tồn hệ thống bị ngưng Hình 1.4- Ring Topology - Bus Topology: Ở dạng Bus tất nút phân chia đường truyền (bus) Đường truyền giới hạn hai đầu loại đầu nối đặc biệt gọi Terminator Khi nút truyền liệu, tín hiệu quảng bá hai chiều bus, nút cịn lại nhận tín hiệu trực tiếp Loại mạng dùng dây cáp ít, dễ lắp đặt Tuy có bất lợi có ùn tắc giao thơng di chuyển với lưu lượng lớn có hỏng hóc đoạn khó phát hiện, nút ngừng hoạt động ảnh hưởng tới toàn hệ thống Hình 1.5- Bus Topology Sinh viên thực hiện: Phạm Hồng Thư Lớp : CT902 Hình 1.6- Star Topology Trang 10 Đồ án tốt nghiệp ngành CNTT Truyền file qua mạng dựa Socket TCP Hình 4.3- Giao diện phía server chọn file truyền Hình 4.4- Thông báo gửi file thành công từ Server đến Client Hình 4.5- Thơng báo bên Clien gửi file tới cho Server Hình 4.6- Thơng báo bạn nhận thành cơng file gửi từ Client 4.4.2 Giao diện phía Client Sinh viên thực hiện: Phạm Hồng Thư Lớp : CT902 Trang 43 Đồ án tốt nghiệp ngành CNTT Truyền file qua mạng dựa Socket TCP Hình 4.7- Nhập địa máy Server số hiệu cổng Server để kết nối Hình 4.8- Giao diện chương trình phía Client Hình 4.9- Thơng báo bên Server gửi file tới cho Client Hình 4.10- Thơng báo bạn nhận thành công file gửi từ Server Sinh viên thực hiện: Phạm Hồng Thư Lớp : CT902 Trang 44 Đồ án tốt nghiệp ngành CNTT Truyền file qua mạng dựa Socket TCP Hình 4.11- Giao diện phía server chọn file truyền Hình 4.12- Thơng báo gửi file thành công từ Client đến Server 4.5 Nhận xét Chương trình ứng dụng lựa chọn viết ngơn ngữ Java, ta chọn Java lý sau đây: Thứ nhất, ứng dụng mạng kiểu gọn gàng viết Java, với Java có dịng mã hơn, dịng dễ dàng giải thích với người lập trình bắt đầu Thứ hai, chương trình ứng dụng mơ hình clients/server lập trình Java gia tăng ngày thơng dụng trở thành tiêu chuẩn cho lập trình mạng vài năm tới Java ngơn ngữ độc lập nền, có chế bẫy lỗi (điều quản ngoại lệ), giải hầu lỗi xảy trình xuất/nhập hoạt động mạng khả phân luồng (thread) mạnh cung cấp phương pháp đơn giản để xây dựng server mạnh mẽ Sinh viên thực hiện: Phạm Hồng Thư Lớp : CT902 Trang 45 Đồ án tốt nghiệp ngành CNTT Truyền file qua mạng dựa Socket TCP KẾT LUẬN Truyền file qua mạng ứng dụng phổ biến mạng LAN Internet như: tải xuống file từ máy chủ file xa, gửi/nhận thư điện tử, Truyền file qua mạng dựa Socket TCP phương pháp truyền file có độ tin cậy cao trước truyền cần thiết lập thành công kênh truyền liệu Không phải phương pháp thay hoàn toàn phương pháp truyền file khác mà ta sử dụng Bản chất phương pháp truyền file dựa vào Socket TCP nhằm tăng thêm hiệu xuất làm việc Đề tài “Tìm hiểu lập trình socket TCP java ứng dụng truyền file qua mạng”đã đạt kết định Về sở lý thuyết, đồ án trình bầy nội dung mạng máy tính, sơ lược ngơn ngữ Java, lập trình Socket TCP nói chung lập trình Socket TCP Java nói riêng; nội dung liên quan đến truyền file quua mạng Về ứng dụng đồ án phân tích cách chi tiết chế hoạt động chương trình phía clients, phía server cài đặt thành cơng chương trình Java ngơn ngữ mạnh mẽ, tính bảo mật cao độc lập với nền, chương trình ứng dụng đồ án dễ dàng chạy hệ thống khác mà lập trình lại Tuy nhiên, hạn chế thời gian trình độ nên nhiều tính chương trình chưa hồn thiện Trong thời gian tới, chương trình hồn thiện theo hướng bổ sung chức cho phù hợp yêu cầu đặc thù việc truyền file qua mạng, áp dụng vào thực tế sống Sinh viên thực hiện: Phạm Hồng Thư Lớp : CT902 Trang 46 Đồ án tốt nghiệp ngành CNTT Truyền file qua mạng dựa Socket TCP Tài liệu tham khảo Tài liệu tiếng Việt [1] Giáo trình Lập trình Hướng đối tượng JAVA - Ngọc Anh Thư Press- NXB Thống Kê [2] JAVA Lập trình mạng - Nguyễn Phương Lan Hoàng Đức Hải - NXB Giáo Dục [3] Lập trình Socket với TCP (bản điện tử) [4] Giáo trình Hệ thống mạng CCNA- Nguyễn Hồng Sơn - NXB Giáo dục năm 2001 Tài liệu tiếng Anh [1] Computer Networking - By James F Kurose and Keith W Ross - Addison Wesley [2] IP Network Address Translation - Michael Hasenstein -1997 Tài liệu khác [1] Website: http://quantrimang.com/ [2] Website: http://www.planet-source-code.com/ [3] Website: http://www.javavietnam.org/ Sinh viên thực hiện: Phạm Hồng Thư Lớp : CT902 Trang 47 Đồ án tốt nghiệp ngành CNTT Truyền file qua mạng dựa Socket TCP Phụ lục Mã nguồn chương trình ứng dụng Mã nguồn chương chình phía Server //FileTransferServer import java.io.*; import java.net.*; import java.util.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class FileTransferServer extends Frame { public static String strHostAddress = ""; public static int intPortNumber = 0, intMaxClients = 0; public static Vector vecConnectionSockets = null; public static FileTransferServer objFileTransfer; public static String strFileName = "",strFilePath = ""; public static Socket clientSocket = null; public static ObjectOutputStream outToServer = null; public static ObjectInputStream inFromServer = null; public static void main (String [] args) throws IOException { BufferedReader stdin = new BufferedReader(new InputStreamReader (System.in)); System.out.print("Chon so hieu cong de ket noi: "); System.out.flush(); intPortNumber = Integer.parseInt(stdin.readLine()); System.out.print("So luong may Client co the ket noi: "); System.out.flush(); intMaxClients = Integer.parseInt(stdin.readLine()); objFileTransfer = new FileTransferServer(); } public Label lblSelectFile; public Label lblTitle; public Label lblStudentName; public Label lblStudentClass; public TextField tfFile; public Button btnBrowse; public Button btnSend; public Button btnReset; public FileTransferServer () { Sinh viên thực hiện: Phạm Hồng Thư Lớp : CT902 Trang 48 Đồ án tốt nghiệp ngành CNTT Truyền file qua mạng dựa Socket TCP setTitle("Chuong trinh truyen File phia Server"); setSize(400 , 300); setLayout(null); addWindowListener(new WindowAdapter () { public void windowClosing (WindowEvent e) { System.exit(0); } } ); lblTitle = new Label("Chuong trinh truyen File qua mang dua tren Socket TCP "); add(lblTitle); lblTitle.setBounds(50,30,450,50); lblSelectFile = new Label("Duong dan file can truyen:"); add(lblSelectFile); lblSelectFile.setBounds(50,100,200,20); lblStudentName = new Label("Sinh vien thuc hien:Pham Hong Thu"); add(lblStudentName); lblStudentName.setBounds(130,250,200,20); lblStudentClass = new Label("Lop : CT902"); add(lblStudentClass); lblStudentClass.setBounds(130,270,100,20); tfFile = new TextField(""); add(tfFile); tfFile.setBounds(50,134,200,20); btnBrowse = new Button("Chon File"); btnBrowse.addActionListener(new buttonListener()); add(btnBrowse); btnBrowse.setBounds(283,133,70,20); btnSend = new Button("Gui"); btnSend.addActionListener(new buttonListener()); add(btnSend); btnSend.setBounds(100,200,50,20); btnReset = new Button("Xoa"); btnReset.addActionListener(new buttonListener()); add(btnReset); btnReset.setBounds(170,200,50,20); show(); vecConnectionSockets = new Vector(); try { ServerSocket welcomeSocket = new ServerSocket(intPortNumber,intMaxClients); while (true) { vecConnectionSockets.addElement(new ThreadedConnectionSocket(welcomeSocket.accept())); Thread.yield(); Sinh viên thực hiện: Phạm Hồng Thư Lớp : CT902 Trang 49 Đồ án tốt nghiệp ngành CNTT Truyền file qua mạng dựa Socket TCP } } catch (IOException ioe) {System.out.println(ioe);} } public static String showDialog () { FileDialog fd = new FileDialog(new Frame(),"Select File ",FileDialog.LOAD); fd.show(); return fd.getDirectory()+fd.getFile(); } private class buttonListener implements ActionListener { public void actionPerformed (ActionEvent ae) { byte[] arrByteOfSentFile = null; if (ae.getSource() == btnBrowse) { strFilePath = showDialog(); tfFile.setText(strFilePath); int intIndex = strFilePath.lastIndexOf("\\"); strFileName = strFilePath.substring(intIndex+1); } if (ae.getSource() == btnSend) { try { FileInputStream inFromHardDisk = new FileInputStream (strFilePath); int size = inFromHardDisk.available(); arrByteOfSentFile = new byte[size]; inFromHardDisk.read(arrByteOfSentFile,0,size); for (int i=0;i

Ngày đăng: 06/04/2021, 18:35

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

Tài liệu liên quan