Sử Dụng Kỹ Thuật Lập Trình Socket Xây Dựng Chương Trình Truyền File Qua Mạng Lan

61 1.7K 5
Sử Dụng Kỹ Thuật Lập Trình Socket Xây Dựng Chương Trình Truyền File Qua Mạng Lan

Đ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 : Xây dựng chương trình truyền file qua mạng LAN Mạng máy tínhViện điện tử viễn thôngĐH Bách Khoa Hà Nội

Sử Dụng Kỹ Thuật Lập Trình Socket Xây Dựng Chƣơng Trình Truyền File Qua Mạng Lan LỜI NĨI ĐẦU Thế kỷ 21 đƣợc mệnh danh kỷ công nghệ thông tin, với bùng nổ mạnh mẻ khoa học công nghệ Đây kỷ nguyên văn minh dựa sở cơng nghiệp trí tuệ Ngày nay, tin học trở thành môn khoa học quan trọng giới Sự phát triển mạnh mẽ nhƣ cơng việc lập trình ứng dụng nhằm phục vụ nhu cầu, lợi ích ngƣời trở nên cấp thiết 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ựngluận văn - báo cáo - tiểu luận chuyên ngành 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 đƣợc truyền mạng phải đảm bảo: liệu đƣợc chuyển tới đích nhanh chóng đắn Hầu hết liệu đƣợc truyền qua mạng truyền dƣới 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 "Sử Dụng Kỹ Thuật Lập Trình Socket Xây Dựng Chƣơng Trình Truyền File Qua Mạng Lan”.Với lập trình socket bắt buộc máy phải đƣợc 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ố đƣợc gọi số hiệu cổng) đƣợc gán cho socket Việc gán số hiệu cổng cho socket đƣợc 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 Mục tiêu đồ án tìm hiểu mạng máy tính kĩ thật lập trình socket với ngơn ngữ lập trình C#, sở xây dựng ứng dụng truyền file mạng cục Đồ án xây dựng thử nghiệm hệ thống cho phép trao đổi liệu dƣới dạng truyền file, tƣơng tác điểm – điểm mạng LAN Đồ án đƣợc trình bày gồm chƣơng với bố cục nhƣ sau : Hoàng – Long – Ngọc – Nguyên – SET_HUST Trang Sử Dụng Kỹ Thuật Lập Trình Socket Xây Dựng Chƣơng Trình Truyền File Qua Mạng Lan CHƢƠNG I: Tổng Quan Về Lập Trình Mạng CHƢƠNG II: Lập Trình Socket Với C# CHƢƠNG III: Xây Dựng Và Thiết Kế Chƣơng Trình TÀI LIỆU THAM KHẢO Do thời gian thực đồ án ngắn, nên có nhiều hạn chế sai sót qúa trình thực hiện, mong thầy bạn đóng góp ý kiến để đề tài nhóm em đƣợc hồn chỉnh Từ làm sở để nhóm củng cố phát triển thêm Cuối cùng, nhóm em xin chân thành cảm ơn thầy Vũ Song Tùng bạn lớp góp ý giúp đỡ nhóm em hồn thành xong đồ án Hà Nội, 30/05/2011 Hoàng – Long – Ngọc – Nguyên – SET_HUST Trang Sử Dụng Kỹ Thuật Lập Trình Socket Xây Dựng Chƣơng Trình Truyền File Qua Mạng Lan MỤC LỤC LỜI NÓI ĐẦU MỤC LỤC DANH MỤC HÌNH VẼ CHƢƠNG I TỔNG QUAN VỀ LẬP TRÌNH MẠNG 1.1 MƠ HÌNH THAM CHIẾU OSI 1.2 CHỒNG GIAO THỨC TCP/IP 1.3 MƠ HÌNH TRUYỀN THƠNG TRONG CẤU TRÚC MẠNG 11 1.3.1 Nguyên tắc truyền thông 11 1.3.2 Nguyên tắc phƣơng pháp phân tầng 12 1.4 ĐỊA CHỈ IP – CÁC ĐỊA CHỈ IP DÀNH RIÊNG 14 1.5 GIAO THỨC TRUYỀN FILE FTP 14 1.5.1 Khái niệm giao thức FTP 14 1.5.2 Đặc điểm nguyên lý hoạt động 15 1.5.2.1 P 16 1.5.2.2 P 18 1.5.2.3 Q 1.5.2.4 P 20 P 24 CHƢƠNG II 26 LẬP TRÌNH MẠNG VỚI SOCKET 26 2.1 TỔNG QUAN VỀ C# 26 2.1.1 Cơ Bản Về NET Framework 26 2.1.2 Các thành phần NET Framework 26 2.1.3 Các tính ngơn ngữ lập trình C# 27 2.1.4 Các ứng dụng C# 27 2.1.5 Các lợi ích C# 27 2.1.6 Mơi trƣờng phát triển tích hợp Visual Studio NET 2005 27 2.2 GIỚI THIỆU VỀ LẬP TRÌNH SOCKET 28 Hoàng – Long – Ngọc – Nguyên – SET_HUST Trang Sử Dụng Kỹ Thuật Lập Trình Socket Xây Dựng Chƣơng Trình Truyền File Qua Mạng Lan 2.3 LẬP TRÌNH MẠNG VỚI TCPSOCKET 29 2.3.1 Mô hình giao thức 29 2.3.2 Thiết lập kết nối 30 2.3.3 Truyền nhận liệu 32 2.3.4 Đóng liên kết 32 2.4 LẬP TRÌNH MẠNG VỚI UDP SOCKET 33 2.4.1 Giao thức UDP 33 2.4.2 Một số thuật ngữ UDP 34 2.4.3 Hoạt động giao thức UDP 35 2.4.4 Các nhƣợc điểm giao thức UDP 35 2.4.5 Các ƣu điểm UDP 36 2.4.6 Khi nên sử dụng UDP 37 2.5 MƠ HÌNH CLIENT/SERVER 37 2.5.1 Tổng quan 37 2.5.2 Giao thức cho ứng dụng Client/Server 44 CHƢƠNG III 48 PHÂN TÍCH THIẾT KẾ CHƢƠNG TRÌNH 48 3.1 MỤC ĐÍCH CỦA ĐỀ TÀI 48 3.2 GIỚI THIỆU VỀ CHƢƠNG TRÌNH 48 3.3 GIỚI THIỆU THÀNH VIÊN VÀ PHÂN CÔNG NHIỆM VỤ: 49 3.3.1 Giới thiệu thành viên: 49 3.3.2 Phân công nhiệm vụ thành viên: 49 3.3.2.1 K 49 3.3.2.1 P â 49 3.4 GIAO DIỆN VÀ SỬ DỤNG CHƢƠNG TRÌNH: 50 3.4.1 Giao diện: 50 3.4.1.1 3.4.1.2 Se e e 50 55 3.4.2 Sử dụng chƣơng trình: 59 KẾT LUẬN 60 Hoàng – Long – Ngọc – Nguyên – SET_HUST Trang Sử Dụng Kỹ Thuật Lập Trình Socket Xây Dựng Chƣơng Trình Truyền File Qua Mạng Lan TÀI LIỆU THAM KHẢO 61 DANH MỤC HÌNH VẼ Hình I - Mơ hình OSI Hình I - Mơ hình TCP/IP 10 Hình I - Mơ hình truyền thơng đơn giản tầng 12 Hình I - Trao đổi tầng 14 Hình I - Các tiến trình mơ hình FTP 17 Hình I - Tiến trình làm việc dạng chủ động FTP 21 Hình I - Tiến trình làm việc dạng bị động FTP 22 Hình II - Các giao thức lập trình Socket 29 Hình II - Kết nối TCP 29 Hình II - Dạng thức gói tin UDP 33 Hình III - Quá trình kết nối 48 Hình III - Giao diện chƣơng trình Server 50 Hình III - Giao diện chƣơng trình Client 55 Hoàng – Long – Ngọc – Nguyên – SET_HUST Trang Sử Dụng Kỹ Thuật Lập Trình Socket Xây Dựng Chƣơng Trình Truyền File Qua Mạng Lan CHƢƠNG I TỔNG QUAN VỀ LẬP TRÌNH MẠNG 1.1 MƠ HÌNH THAM CHIẾU OSI Hình I - Mơ hình OSI - Mơ hình tham chiếu Open System Interconnect (OSI) mơ hình phát triển Open System Interconnect (OSI), mơ hình mơ tả cách liệu từ ứng dụng máy tính truyền đến ứng dụng máy tính khác Mơ hình tham chiếu OSI gồm có lớp, lớp giữ chức mạng khác Mỗi chức mạng gán với một cặp lớp liền kề, lớp có quan hệ độc lập với lớp khác - Sự tách lớp mơ hình mang lại lợi ích sau: o Chia hoạt động thông tin mạng thành phần nhỏ hơn, đơn giản giúp dễ khảo sát o Chuẩn hóa thành phần mạng phép phát triển mạng từ nhiều nhà cung cấp sản phẩm - Ngăn chặn tình trạng thay đổi lớp làm ảnh hưởng đến lớp khác, giúp lớp phát triển độc lập nhanh chóng Mơ hình tham OSI ị Hồng – Long – Ngọc – Nguyên – SET_HUST ĩ q ắ s Trang Sử Dụng Kỹ Thuật Lập Trình Socket Xây Dựng Chƣơng Trình Truyền File Qua Mạng Lan - Cách thức thiết bị giao tiếp truyền thông với - Các phương pháp để thiết bị mạng truyền liệu, khơng - Các phương pháp để đảm bảo truyền liệu bên nhận - Cách thức vận tải, truyền, xếp kết nối với - Cách thức đảm bảo thiết bị mạng trì tốc độ truyền liệu thích hợp - Cách biểu diễn bit thiết bị truyền dẫn m - OSI ợ b ớ ă s Lớp ứng dụng (Application Layer): giao diện chương trình ứng dụng người dùng mạng Lớp Application xử lý truy nhập mạng chung, kiểm soát luồng phục hồi lỗi Lớp không cung cấp dịch vụ cho lớp mà cung cấp dịch vụ cho ứng dụng như: truyền file, gởi nhận E-mail, Telnet, HTTP, FTP, SMTP… - Lớp trình diễn (Presentation Layer): lớp chịu trách nhiệm thương lượng xác lập dạng thức liệu trao đổi Nó đảm bảo thông tin mà lớp ứng dụng hệ thống đầu cuối gởi đi, lớp ứng dụng hệ thống khác đọc Lớp trình bày thơng dịch nhiều dạng liệu khác thông qua dạng chung, đồng thời nén giải nén liệu - Lớp phiên (Session Layer): lớp có chức thiết lập, quản lý, kết thúc phiên thông tin hai thiết bị truyền nhận Lớp phiên cung cấp dịch vụ cho lớp trình bày Lớp Session cung cấp đồng hóa tác vụ người dùng cách đặt điểm kiểm tra vào luồng liệu Bằng cách này, mạng khơng hoạt động có liệu truyền sau điểm kiểm tra cuối phải truyền lại Lớp thi hành kiểm soát hội thoại trình giao tiếp, điều chỉnh bên truyền, nào, Ví dụ như: RPC, NFS, Lớp kết nối theo ba cách: Haft duplex,Simplex, Fullduplex - Lớp vận chuyển (Transport Layer): lớp vận chuyển phân đoạn liệu từ hệ thống máy truyền tái thiết lập liệu vào luồng liệu hệ thống máy nhận đảm bảo việc bàn giao thông điệp thiết bị đáng tin cậy Dữ liệu lớp gọi segment Hoàng – Long – Ngọc – Nguyên – SET_HUST Trang Sử Dụng Kỹ Thuật Lập Trình Socket Xây Dựng Chƣơng Trình Truyền File Qua Mạng Lan Lớp thiết lập, trì kết thúc mạch ảo đảm bảo cung cấp dịch vụ sau: o Xếp thứ tự phân đoạn: thông điệp lớn tách thành nhiều phân đoạn nhỏ để bàn giao, lớp vận chuyển xếp thứ tự phân đoạn trước ráp nối phân đoạn thành thông điệp ban đầu o Kiểm sốt lỗi: có phân đoạn bị thất bại, sai trùng lắp, lớp vận chuyển yêu cầu truyền lại o Kiểm soát luồng: lớp vận chuyển dùng tín hiệu báo nhận để xác nhận Bên gửi không truyền phân đoạn liệu bên nhận chưa gởi tín hiệu xác nhận nhận phân đoạn liệu trước đầy đủ - Lớp mạng (Network Layer): lớp mạng chịu trách nhiệm lập địa thông điệp, diễn dịch địa tên logic thành địa vật lý đồng thời chịu trách nhiệm gởi packet từ mạng nguồn đến mạng đích Lớp định đường từ máy tính nguồn đến máy tính đích Nó định liệu truyền đường dựa vào tình trạng, ưu tiên dịch vụ yếu tố khác Nó quản lý lưu lượng mạng chẳng hạn chuyển đổi gói, định tuyến, kiểm soát tắc nghẽn liệu.Dữ liệu lớp gọi packet datagram - Lớp liên kết liệu (Data link Layer): cung cấp khả chuyển liệu tin cậy xuyên qua liên kết vật lý Lớp liên quan đến: o Địa vật lý o Mơ hình mạng o Cơ chế truy cập đường truyền o Thông báo lỗi o Thứ tự phân phối frame o Điều khiển dịng Tại lớp data link, bít đến từ lớp vật lý chuyển thành frame liệu cách dùng số nghi thức lớp Lớp data link chia thành hai lớp con: o Lớp LLC (logical link control) o Lớp MAC (media access control) Lớp LLC phần so với giao thức truy cập đường truyền khác, cung cấp mềm dẻo giao tiếp Bởi lớp LLC hoạt động độc lập Hồng – Long – Ngọc – Nguyên – SET_HUST Trang Sử Dụng Kỹ Thuật Lập Trình Socket Xây Dựng Chƣơng Trình Truyền File Qua Mạng Lan với giao thức truy cập đường truyền, giao thức lớp (ví dụ IP lớp mạng) hoạt động mà không phụ thuộc vào loại phương tiện LAN Lớp LLC lệ thuộc vào lớp thấp việc cung cấp truy cập đường truyền Lớp MAC cung cấp tính thứ tự truy cập vào môi trường LAN Khi nhiều trạm truy cập chia sẻ môi trường truyền, để định danh trạm, lớp cho MAC định nghĩa trường địa phần cứng, gọi địa MAC address Địa MAC số đơn giao tiếp LAN (card mạng) Lớp vật lý (Physical Layer): định nghĩa qui cách điện, cơ, thủ tục đặc tả chức để kích hoạt, trì dừng liên kết vật lý hệ thống đầu cuối Một số đặc điểm lớp vật lý bao gồm:  Mức điện  Khoảng thời gian thay đổi điện  Tốc độ liệu vật lý  Khoảng đường truyền tối đa  Các đầu nối vật lý - Lớp vật lý(physical): Lớp vật lý bao gồm việc truyền tải tín hiệu mơi trường từ máy tính đến máy tính khác Lớp gồm có chi tiết kỹ thuật đặc tính điện như: mức điện áp, định thời tín hiệu, tốc độ liệu, độ dài truyền tải lớn kết nối vật lý thiết bị mạng Để thiết bị hoạt động lớp vật lý, khơng có kiến thức liệu mà truyền tải Một thiết bị lớp vật lý truyền tải nhận liệu cách đơn giản 1.2 CHỒNG GIAO THỨC TCP/IP Hoàng – Long – Ngọc – Nguyên – SET_HUST Trang Sử Dụng Kỹ Thuật Lập Trình Socket Xây Dựng Chƣơng Trình Truyền File Qua Mạng Lan Hình I - Mơ hình TCP/IP - Sự đời họ giao thức TCP/IP gắn liền với đời Internet mà tiền thân mạng ARPAnet (Advanced Research Projects Agency) Bộ Quốc phòng Mỹ tạo Đây giao thức dùng rộng rãi tính mở Hai giao thức dùng chủ yếu TCP (Transmission Control Protocol) IP (Internet Protocol) Chúng nhanh chóng đón nhận phát triển nhiều nhà nghiên cứu hãng cơng nghiệp máy tính với mục đích xây dựng phát triển mạng truyền thông mở rộng khắp giới mà ngày gọi Internet - TCP/IP có cấu trúc tương tự mơ hình OSI, nhiên để đảm bảo tính tương thích mạng tin cậy việc truyền thông tin mạng, giao thức TCP/IP chia thành phần riêng biệt: giao thức IP sử dụng cho việc kết nối mạng giao thức TCP để đảm bảo việc truyền liệu cách tin cậy - Lớp ứng dụng: Tại mức cao này, người sử dụng thực chương trình ứng dụng truy xuất đến dịch vụ hữu TCP/IP Internet Một ứng dụng tương tác với protocol mức giao vận (transport) để gửi nhận liệu Mỗi chương trình ứng dụng chọn kiểu giao vận mà cần, dãy thông điệp chuỗi byte liên tục Chương trình ứng dụng gửi liệu dạng mà yêu cầu đến lớp giao vận - Lớp giao vận: Nhiệm vụ lớp giao vận cung cấp phưng tiện liên lạc từ chương trình ứng dụng đến chưng trình ứng dụng khác Việc thơng tin liên lạc thường gọi end-to-end Mức chun trở điều khiển lng thơng tin Nó cung cấp giao vận có độ tin cậy, bảo đảm liệu đến nơi mà khơng có lỗi theo thứ tự Để làm điều đó, Hồng – Long – Ngọc – Ngun – SET_HUST Trang 10 Sử Dụng Kỹ Thuật Lập Trình Socket Xây Dựng Chƣơng Trình Truyền File Qua Mạng Lan o Tính hiệu : Đồng khơng đồng Thông tin điều khiển, header Thời gian trễ round trip o Trạng thái :Ai đọc, ghi (ai truyền, nhận) o Timeout : Đây vấn đề thiếu ứng dụng mạng tính biến động khơng biết trước trạng thái mạng Hồng – Long – Ngọc – Nguyên – SET_HUST Trang 47 Sử Dụng Kỹ Thuật Lập Trình Socket Xây Dựng Chƣơng Trình Truyền File Qua Mạng Lan CHƢƠNG III PHÂN TÍCH THIẾT KẾ CHƢƠNG TRÌNH 3.1.MỤC ĐÍCH CỦA ĐỀ TÀI Xây dựng chương trình trao đổi file máy mạng Lan với thơng qua mơ hình Cient/Server Chức chương trình Server gửi file cho Client 3.2.GIỚI THIỆU VỀ CHƢƠNG TRÌNH - Dựa yêu cầu muốn trao đổi file máy mạng Lan với thơng qua mơ hình Cient/Server Dựa kiến thức học môn Kỹ thuật Phần mềm ứng dụng nhóm xây dựng chương trình Truyền File Mạng Lan viết ngôn ngữ C# - Chương trình có giao diện đơn giản, trực quan giúp người sử dụng dễ dàng thao tác với điều khiển Quy trình hoạt động chương trình : Hình III - Quá trình kết nối  socket(): Client yêu cầu tạo socket để sử dụng dịch vụ tầng vận chuyển  connect(): Client gởi yêu cầu nối kết đến Server có địa IP port xác định  accept(): Server chấp nhận nối kết Client, kênh giao tiếp ảo hình thành,Client Server trao đổi thơng tin với Hoàng – Long – Ngọc – Nguyên – SET_HUST Trang 48 Sử Dụng Kỹ Thuật Lập Trình Socket Xây Dựng Chƣơng Trình Truyền File Qua Mạng Lan  Sau Server chấp nhận kết nối từ Client Server truyền file cho Client Client tiếp nhận lưu file 3.3.GIỚI THIỆU THÀNH VIÊN VÀ PHÂN CƠNG NHIỆM VỤ: 3.3.1 Giới thiệu thành viên: Nhóm gồm thành viên bao gồm: 1) Lưu Đình Hồng 2) Hoàng Trung Long ĐT4-K52 ĐT6-K52 SHSV 20071232 SHSV 20071764 3) Phạm Thị Ngọc ĐT8-K52 SHSV 20076216 4) Đỗ Nguyễn Ngọc Nguyên ĐT3-K52 SHSV 20072127 3.3.2 Phân công nhiệm vụ thành viên: 3.3.2.1 K  : Tuần 7: + Tìm hiểu mạng máy tính, giao thức FTP, Socket + Lựa chọn ngơn ngữ lập trình, cụ thể C#  Tuần 8:  + Cài đặt Visual Studio ôn lại kỹ lập trình C# +Tập code ứng dụng vào tập Tuần 9,10,11,12,13: + Thiết kế chương trình theo yêu cầu cho s n Tuần 14: Viết nộp báo cáo  3.3.2.1 P â  : Tuần 7: + Cả nhóm họp thống chọn ngơn ngữ lập trình C# + Hồng, Ngọc : Tìm hiểu giao thức trao đổi file FTP + Long, Ngun: Tìm hiểu Socket + Cả nhóm: Tìm hiểu tổng quan mạng máy tính  Tuần 8: + Cả nhóm cài đặt Visual C#, ôn lại kỹ lập trình Tập code cho thuật tốn Hồng – Long – Ngọc – Nguyên – SET_HUST Trang 49 Sử Dụng Kỹ Thuật Lập Trình Socket Xây Dựng Chƣơng Trình Truyền File Qua Mạng Lan  Tuần 9,10,11,12,13: + Ngọc: Thiết kế giao diện + Hồng: Thiết kế lập trình giao diện, lập trình giao thức FTP + Long, Nguyên: lập trình Socket  Tuần 14: Cả nhóm hồn thiện báo cáo 3.4.GIAO DIỆN VÀ SỬ DỤNG CHƢƠNG TRÌNH: 3.4.1 Giao diện: Se e 3.4.1.1 Hình III - Giao diện chƣơng trình Server e ợ sử ụ Se e using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Net.Sockets; using System.Net; using System.Text; using System.Windows.Forms; using System.Threading; Hoàng – Long – Ngọc – Nguyên – SET_HUST Trang 50 Sử Dụng Kỹ Thuật Lập Trình Socket Xây Dựng Chƣơng Trình Truyền File Qua Mạng Lan namespace RunServer { public partial class Server : Form { public delegate void UpdateListBoxCallBack(string s); public delegate void UpdateLabelCallBack(string s); public delegate void Updatepgdstatus(int s,int p); private NetworkStream nwkStream = null; private Socket socketForClient = null; private TcpListener tcpListener = null; private Stream stmReader = null; private Stream stmWriter = null; private Thread t = null; public Server() { InitializeComponent(); IPHostEntry ips = Dns.GetHostByName(Dns.GetHostName()); ipnhan.Text = ips.AddressList[0].ToString(); portnhan.Text = "Nhập số hiệu port"; txtFileName.Text = " Kích vào Browse để chọn file"; label5.Text = null; } private void Browse(object sender, EventArgs e) { txtFileName.Clear(); OpenFileDialog fileDialog = new OpenFileDialog(); fileDialog.Title = "Chon File Gui Cho Client"; fileDialog.Filter = "Text Files (*.txt)|*.txt|Word Documents" + "(*.doc)|*.doc|All Files (*.*)|*.*"; fileDialog.Multiselect = true; fileDialog.ShowReadOnly = true; if (fileDialog.ShowDialog(this) == DialogResult.OK) { txtFileName.Text = fileDialog.FileName; lblMessage.Text = null; } } private void btnStart_Click(object sender, EventArgs e) { t = new Thread(new ThreadStart(startSever)); txtFileName.Clear(); lblMessage.Text = ""; lblProgressbar.Text = ""; pgbStatus.Value = 0; } Hoàng – Long – Ngọc – Nguyên – SET_HUST Trang 51 Sử Dụng Kỹ Thuật Lập Trình Socket Xây Dựng Chƣơng Trình Truyền File Qua Mạng Lan private void startSever() { try { set1("Listening"); IPEndPoint ip = new IPEndPoint(IPAddress.Parse(ipnhan.Text), int.Parse(portnhan.Text)); tcpListener = new TcpListener(ip); tcpListener.Start(); socketForClient = tcpListener.AcceptSocket(); if (socketForClient.Connected) { NetworkStream ns = new NetworkStream(socketForClient); StreamReader sr = new StreamReader(ns); StreamWriter sw = new StreamWriter(ns); string filename = txtFileName.Text; nwkStream = new NetworkStream(socketForClient); stmReader = File.OpenRead(txtFileName.Text); stmWriter = nwkStream; FileInfo flInfo = new FileInfo(txtFileName.Text); int size = Convert.ToInt32(flInfo.Length); byte[] buff = new byte[2048]; int len = 0; int progress = 0; set1("Starting"); sw.WriteLine(filename); sw.Flush(); while ((len = stmReader.Read(buff, 0, 2048)) != 0) { progress += len; set3(size,progress); set(progress.ToString()+" Byte of "+size +" Byte"); stmWriter.Write(buff, 0, len); stmWriter.Flush(); } set1("File has sent succesfully!"); } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } finally { if (socketForClient != null) { socketForClient.Close(); nwkStream.Close(); Hoàng – Long – Ngọc – Nguyên – SET_HUST Trang 52 Sử Dụng Kỹ Thuật Lập Trình Socket Xây Dựng Chƣơng Trình Truyền File Qua Mạng Lan stmWriter.Close(); stmReader.Close(); tcpListener.Stop(); } } } void set1(string s) { if (InvokeRequired) { object[] pList = { s }; lblMessage.BeginInvoke(new UpdateListBoxCallBack(OnUpdateLabel), pList); } else { OnUpdateLabel(s); } } private void OnUpdateLabel(String s) { lblMessage.Text = s; } void set(string s) { if (InvokeRequired) { object[] pList = { s }; lblProgressbar.BeginInvoke(new UpdateListBoxCallBack(OnUpdateLabel1), pList); } else { OnUpdateLabel1(s); } } private void OnUpdateLabel1(String s) { lblProgressbar.Text = s; } void set3(int s,int p) { if (InvokeRequired) { object[] pList = { s,p }; pgbStatus.BeginInvoke(new Updatepgdstatus(OnUpdatepgdstatus), pList); } else Hoàng – Long – Ngọc – Nguyên – SET_HUST Trang 53 Sử Dụng Kỹ Thuật Lập Trình Socket Xây Dựng Chƣơng Trình Truyền File Qua Mạng Lan { OnUpdatepgdstatus(s,p); } } private void OnUpdatepgdstatus(int s,int p) { pgbStatus.Maximum = s; pgbStatus.Value = p; } private void Start(object sender, EventArgs e) { t.Start(); } private void sukien2(object sender, EventArgs e) { portnhan.Clear(); } private void clearPort(object sender, EventArgs e) { portnhan.Clear(); } private void ClearFile(object sender, EventArgs e) { txtFileName.Clear(); } private void thongtin(object sender, EventArgs e) { MessageBox.Show("Chương trình xây dựng Hoàng - Long - Ngọc Nguyên - SET*HUST", "Thơng Tin Chương Trình", MessageBoxButtons.OKCancel, MessageBoxIcon.Information); } private void disconnect(object sender, EventArgs e) { label5.Text = "Kết nối bị ngắt"; socketForClient.Close(); tcpListener.Stop(); } private void exit(object sender, EventArgs e) { Close(); } private void clearfilename(object sender, EventArgs e) Hoàng – Long – Ngọc – Nguyên – SET_HUST Trang 54 Sử Dụng Kỹ Thuật Lập Trình Socket Xây Dựng Chƣơng Trình Truyền File Qua Mạng Lan { txtFileName.Clear(); } } } e 3.4.1.2 Hình III - Giao diện chƣơng trình Client e ợ sử ụ e using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Net.Sockets; using System.Net; using System.Text; using System.Windows.Forms; using System.Threading; namespace GuiClient { public partial class Client : Form { public delegate void UpdateListBoxCallBack(string s); Hoàng – Long – Ngọc – Nguyên – SET_HUST Trang 55 Sử Dụng Kỹ Thuật Lập Trình Socket Xây Dựng Chƣơng Trình Truyền File Qua Mạng Lan public delegate void UpdateLabelCallBack(string s); private Stream stmReader = null; private NetworkStream nwkStream = null; private Stream stmWriter = null; private TcpClient tcpClient = null; private Thread t = null; SaveFileDialog saveFileDialog = new SaveFileDialog(); public Client() { InitializeComponent(); } private void btnSave_Click(object sender, EventArgs e) { t = new Thread(new ThreadStart(SaveFile)); t.Start(); } public void SaveFile() { txtFileName.Text = saveFileDialog1.FileName; set(null); try { nwkStream = tcpClient.GetStream(); stmReader = nwkStream; stmWriter = File.OpenWrite(txtFileName.Text); byte[] buff = new byte[1024]; int len = 0; set("Receiving"); while ((len = stmReader.Read(buff, 0, 1024)) > 0) { stmWriter.Write(buff, 0, len); stmWriter.Flush(); } set("File has received succesfully!"); } catch (Exception ex) { MessageBox.Show(ex.ToString()); } finally { nwkStream.Close(); stmWriter.Close(); Hoàng – Long – Ngọc – Nguyên – SET_HUST Trang 56 Sử Dụng Kỹ Thuật Lập Trình Socket Xây Dựng Chƣơng Trình Truyền File Qua Mạng Lan stmReader.Close(); } } public void Start(object sender, EventArgs e) { txtFileName.Clear(); IPEndPoint ipe = new IPEndPoint(IPAddress.Parse(ipserver.Text), int.Parse(port.Text)); tcpClient = new TcpClient(); tcpClient.Connect(ipe); StreamReader sr = new StreamReader(tcpClient.GetStream()); StreamWriter sw = new StreamWriter(tcpClient.GetStream()); string duongdan = sr.ReadLine(); textBox1.Text = "Server gui file : " + duongdan; saveFileDialog1.FileName = duongdan; saveFileDialog1.Title = "Luu File Tu Server"; saveFileDialog1.Filter = "Text Files (*.txt)|*.txt|Word Documents" + "(*.doc)|*.doc|All Files (*.*)|*.*"; saveFileDialog1.ShowHelp = true; if (saveFileDialog1.ShowDialog(this) == DialogResult.OK) { txtFileName.Text = saveFileDialog1.FileName; set(null); } } void set(string s) { if (InvokeRequired) { object[] pList = { s }; lblMessage.BeginInvoke(new UpdateListBoxCallBack(OnUpdateLabel), pList); } else { OnUpdateLabel(s); } } private void OnUpdateLabel(String s) { lblMessage.Text = s; } private void clearip(object sender, EventArgs e) { ipserver.Clear(); } Hoàng – Long – Ngọc – Nguyên – SET_HUST Trang 57 Sử Dụng Kỹ Thuật Lập Trình Socket Xây Dựng Chƣơng Trình Truyền File Qua Mạng Lan private void clearport(object sender, EventArgs e) { port.Clear(); } private void clearfilename(object sender, EventArgs e) { txtFileName.Clear(); } private void exit(object sender, EventArgs e) { Close(); } private void disconectToolStripMenuItem_Click(object sender, EventArgs e) { nwkStream.Close(); stmWriter.Close(); stmReader.Close(); } private void txtFileName_TextChanged(object sender, EventArgs e) { } private void textBox1_TextChanged(object sender, EventArgs e) { } private void ipserver_TextChanged(object sender, EventArgs e) { } private void port_TextChanged(object sender, EventArgs e) { } private void txtFileName_TextChanged_1(object sender, EventArgs e) { } Hoàng – Long – Ngọc – Nguyên – SET_HUST Trang 58 Sử Dụng Kỹ Thuật Lập Trình Socket Xây Dựng Chƣơng Trình Truyền File Qua Mạng Lan } } 3.4.2 Sử dụng chƣơng trình: Se e - Chương trình Server kích hoạt trước IP : Chương trình lấy địa ip Card mạng Server gán vào phần địa IP - Port : Tại Server sử dụng port để truyền file, số hiệu port gán từ người sử dụng Server - Sau điền thông tin địa số hiệu port Server kích vào điều khiển Connect để kích hoạt - Tiếp theo chọn file cần truyền cho Client cách kích vào điều khiển Browse chọn file đến file cần truyền Tại ô File xuất đường dẫn file chọn - Kích chọn điều khiển Start để lắng nghe, máy Client kết nối đến File truyền Trạng thái lắng nghe báo hiệu máy Client nhận File biểu diễn Status Client: Sau chương trình Server kích hoạt Client cần phải thực bước sau để nhận File - IP : Tại địa ip người sử dụng Client điền địa máy Server cần kết nối đến - Port : Số hiệu port dùng số hiệu port mà bên Server sử dụng để truyền - Sau bên Server hoàn thành xong bước để bắt đầu lắng nghe kết nối từ Client Client kết nối điều khiển Start - Khi máy Client kết nối File bên Server truyền đến tên File hiển thị Thông Báo Server gửi file - Tiếp theo Client muốn nhận File kích chọn điều khiển Save để lưu File vào máy Hoàng – Long – Ngọc – Nguyên – SET_HUST Trang 59 Sử Dụng Kỹ Thuật Lập Trình Socket Xây Dựng Chƣơng Trình Truyền File Qua Mạng Lan KẾT LUẬN Qua đồ án nhóm chúng em có củng cố lại kiến thức đƣợc học Và dƣới hƣớng dẫn nhiệt tình Thầy Vũ Song Tùng giúp đỡ nhóm chúng em hồn thiện chƣơng trình “Truyền File Qua Mạng Lan” cách hồn chỉnh Chƣơng trình nhóm cịn nhiều hạn chế mong Thầy Cơ bạn có nhận xét đóng góp ý kiến để nhóm hồn thiện phát triển chƣơng nhằm làm cho chƣơng trình đƣợc ứng dụng dễ dàng nhƣng mang lại hiệu truyền file Hoàng – Long – Ngọc – Nguyên – SET_HUST Trang 60 Sử Dụng Kỹ Thuật Lập Trình Socket Xây Dựng Chƣơng Trình Truyền File Qua Mạng Lan TÀI LIỆU THAM KHẢO [1] Giáo Trình Lập Trình Mạng [2] Các trang Web o o http://www.wikipedia o http://www.tailieu.vn o http://www.codeproject o [3] http://google.com.vn http://kilobook.com.vn Và tham khảo thêm từ số tài liệu trang Web khác Hoàng – Long – Ngọc – Nguyên – SET_HUST Trang 61 .. .Sử Dụng Kỹ Thuật Lập Trình Socket Xây Dựng Chƣơng Trình Truyền File Qua Mạng Lan CHƢƠNG I: Tổng Quan Về Lập Trình Mạng CHƢƠNG II: Lập Trình Socket Với C# CHƢƠNG III: Xây Dựng Và Thiết... SET_HUST Trang Sử Dụng Kỹ Thuật Lập Trình Socket Xây Dựng Chƣơng Trình Truyền File Qua Mạng Lan 2.3 LẬP TRÌNH MẠNG VỚI TCPSOCKET 29 2.3.1 Mơ hình giao thức 29 2.3.2 Thiết lập kết... SET_HUST Trang 43 Sử Dụng Kỹ Thuật Lập Trình Socket Xây Dựng Chƣơng Trình Truyền File Qua Mạng Lan o Xây dựng ứng dụng theo kiến trúc lớp công việc phức tạp.Các công cụ thiết kế lập trình khơng cung

Ngày đăng: 04/04/2014, 00:04

Từ khóa liên quan

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

Tài liệu liên quan