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 (Đại học Bách Khoa Hà Nội)

48 303 0
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 (Đại học Bách Khoa Hà Nội)

Đ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

MỤC LỤC LỜI NÓI ĐẦU 2 CHƯƠNG I TỔNG QUAN VỀ LẬP TRÌNH MẠNG 4 1.1. MÔ HÌNH THAM CHIẾU OSI 4 1.2. CHỒNG GIAO THỨC TCPIP 7 1.3. MÔ HÌNH TRUYỀN THÔNG TRONG CẤU TRÚC MẠNG 9 1.3.1. Nguyên tắc truyền thông 9 1.3.2. Nguyên tắc của phương pháp phân tầng 9 1.4. ĐỊA CHỈ IP – CÁC ĐỊA CHỈ IP DÀNH RIÊNG 11 1.5. GIAO THỨC TRUYỀN FILE FTP 12 1.5.1. Khái niệm về giao thức FTP 12 1.5.2. Đặc điểm và nguyên lý hoạt động 13 CHƯƠNG II LẬP TRÌNH MẠNG VỚI SOCKET 20 2.1. TỔNG QUAN VỀ C 20 2. 2 GIỚI THIỆU VỀ LẬP TRÌNH SOCKET 21 2.3. LẬP TRÌNH MẠNG VỚI TCPSOCKET 22 2.3.1. Mô hình giao thức 22 2.3.2. Thiết lập kết nối 22 2.3.3. Truyền nhận dữ liệu 24 2.3.4. Đóng liên kết 25 2.4. LẬP TRÌNH MẠNG VỚI UDP SOCKET 25 2.4.1. Giao thức UDP 25 2.4.2. Một số thuật ngữ UDP 26 2.4.3. Hoạt động của giao thức UDP 27 2.4.4. Các nhược điểm của giao thức UDP 27 2.4.5. Các ưu điểm của UDP 28 2.4.6. Khi nào thì nên sử dụng UDP 29 2.5. MÔ HÌNH CLIENTSERVER 29 2.5.1. Tổng quan 29 2.5.2. Giao thức cho ứng dụng ClientServer 34 CHƯƠNG III PHÂN TÍCH THIẾT KẾ CHƯƠNG TRÌNH 36 3.1. MỤC ĐÍCH CỦA ĐỀ TÀI 36 3.2. GIỚI THIỆU VỀ CHƯƠNG TRÌNH 36 3.3. GIAO DIỆN VÀ SỬ DỤNG CHƯƠNG TRÌNH: 37 3.3.1. Giao diện: 37 3.3.1.1. Chương trình Server : 37 3.3.1.2. Chương trình Client 42 3.3.2. Sử dụng chương trình: 46 KẾT LUẬN 47

Trường Đại Học Bách Khoa Hà Nội Viện Điện Tử - Viễn Thông BÁO CÁO BÀI TẬP LỚN MẠNG MÁY TÍNH Đề 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 Giảng viên hướng dẫn: Thầy Tài Hưng Họ tên sinh viên: Trần Lê Phương Linh ĐT1-k53 Nguyễn Đình Linh ĐT1-k53 Phạm Trung Kiên ĐT9-k53 HÀ NỘI 5/2012 20081556 20081528 20081457 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 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ẽ 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 khơng thể 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 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 "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 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 Hà Nội, 01/05/2012 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 3.3.1.1Chương trình Server : 37 3.3.1.2 Chương trình Client 42 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 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ơ hình tham chiếu OSI định nghĩa qui tắc cho nội dung sau: - 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ơ hình tham chiếu OSI chia thành bảy lớp với chức sau: - 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 số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 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 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 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: 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 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 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 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 - 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 đó, phần mềm protocol lớp giao vận cung cấp giao thức TCP, trình trao đổi thông tin nơi nhận gửi ngược trở lại xác nhận (ACK) nơi gửi truyền lại gói liệu bị Tuy nhiên môi trường truyền dẫn tốt cáp quang chẳng hạn việc xy lỗi nhỏ Lớp giao vận có cung cấp giao thức khác UDP - Lớp Internet: Nhiệm vụ lớp xử lý việc liên lạc thiết bị mạng Nó nhận yêu cầu để gửi gói liệu từ lớp với định danh máy mà gói liệu phi gửi đến Nó đóng segment vào 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 packet, điền vào phần đầu packet, sau sử dụng giao thức định tuyến để chuyển gói tin đến đích trạm Khi nơi nhận kiểm tra tính hợp lệ chúng, sử dụng tiếp giao thức định tuyến để xử lý gói tin Đối với packet xác định thuộc mạng cục bộ, phần mềm Internet cắt bỏ phần đầu packet, chọn giao thức lớp chuyên trở thích hợp để xử lý chúng Cuối cùng, lớp Internet gửi nhận thông điệp kiểm soát sử lý lỗi ICMP - Lớp giao tiếp mạng: Lớp thấp mơ hình TCP/IP lớp giao tiếp mạng, có trách nhiệm nhận IP datagram truyền chúng mạng định 1.3 MƠ HÌNH TRUYỀN THƠNG TRONG CẤU TRÚC MẠNG 1.3.1 Ngun tắc truyền thơng Để mạng máy tính trở mơi trường truyền liệu cần phải có yếu tố sau: - Các hệ thống liên kết với theo cấu trúc kết nối (topology) - Việc chuyển liệu từ máy tính đến máy tính khác mạng thực thơng qua quy định thống gọi giao thức mạng - Phân chia hoạt động truyền thông hệ thống thành nhiều lớp theo nguyên tắc định - Việc xét module cách độc lập với cho phép giảm độ phức tạp cho việc thiết kế cài đặt 1.3.2 Nguyên tắc phương pháp phân tầng - Mỗi hệ thống thành phần mạng xây dựng cấu trúc nhiều tầng có cấu trúc giống như: số lượng tầng chức tầng - Các tầng nằm chồng lên nhau, liệu trao đổi trực tiếp hai tầng kề từ tầng xuống tầng ngược lại - Cùng với việc xác định chức tầng phải xác định mối quan hệ hai tầng kề Dữ liệu truyền từ tầng cao hệ thống truyền đến tầng thấp sau truyền qua đường nối vật lý 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 dạng bit tới tầng thấp hệ thống nhận, sau liệu truyền ngược lên đến tầng cao hệ thống nhận - Chỉ có hai tầng thấp có liên kết vật lý với cịn tầng thứ tư có liên kết logic với Liên kết logic tầng thực thông qua tầng phải tuân theo quy định chặt chẽ, quy định gọi giao thức tầng Hình I - Mơ hình truyền thơng đơn giản tầng - Trong kiến trúc phân tầng, số mơ hình phát triển o Mơ hình tham chiếu kết nối hệ thống mở OSI o Mơ hình Internet : TCP/IP - Việc gửi liệu thực ứng dụng với ứng dụng khác hai máy tính khác thơng qua mạng thực sau: Ứng dụng gửi chuyển liệu cho chương trình truyền thơng máy tính nó, chương trình truyền thơng gửi chúng tới máy tính nhận Chương trình truyền thông máy nhận tiếp nhận liệu, kiểm tra trước chuyển giao cho ứng dụng chờ liệu - Với mơ hình truyền thơng đơn giản người ta chia chương trình truyền thơng thành ba tầng không phụ thuộc vào là: tầng ứng dụng, tầng giao vận tầng tiếp cận mạng - Tầng tiếp cận mạng liên quan tới việc trao đổi liệu máy tính mạng mà nối vào Để liệu đến đích máy tính gửi cần phải chuyển địa máy tính nhận cho mạng qua mạng chuyển thơng tin tới 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 máy gửi sử dụng số phục vụ khác mà mạng cung cấp gửi ưu tiên, tốc độ cao Trong tầng có nhiều phần mềm - Tầng giao vận: thực q trình truyền thơng end-to-end ứng dụng không liên quan tới mạng nằm tầng tiếp cận mạng Tầng truyền liệu không quan tâm tới chất ứng dụng trao đổi liệu mà quan tâm tới cho liệu trao đổi cách an toàn Tầng truyền liệu đảm bảo liệu đến đích đến theo thứ tự mà chúng xử lý Trong tầng truyền liệu người ta phải có chế nhằm đảm bảo xác rõ ràng chế không phụ thuộc vào chất ứng dụng chúng phục vụ cho tất ứng dụng - Tầng ứng dụng chứa module phục vụ cho tất ứng dụng người sử dụng Với loại ứng dụng khác (như truyền file, truyền thư mục) cần module khác Hình I - Trao đổi tầng 1.4 ĐỊA CHỈ IP – CÁC ĐỊA CHỈ IP DÀNH RIÊNG - Mỗi địa IP có độ dài 32 bits (đối với IP4) tách thành vùng (mỗi vùng byte), biểu thị dạng thập phân, bát phân, thập lục phân nhị phân Cách viết phổ biến dùng ký pháp thập phân có dấu chấm để tách vùng Địa IP để định danh cho host liên mạng Khuôn dạng địa IP: host mạng TCP/IP định danh địa có khn dạng 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 Ví dụ xử lí tồn trên lớp trả kết cuối hay chia tải xử lí cho nhiều thành phần lớp khác Rõ ràng tải đường truyền tăng 2.5.2 Giao thức cho ứng dụng Client/Server - Giao thức khuôn dạng tin, tập trạng thái quy tắc, quy ước truyền thông client server - Khi tạo ứng dụng client/server, việc phải thiết kế giao thức May mắn cho giao thức phổ biến FTP, HTTP, SMTP, RPC đươc IETF (nằm Internet Architecture Board-IAB) chuẩn hóa thành giao thức chuẩn Các chuẩn được đưa khuyến nghị IAB gọi RFC (Request for Comment) Mỗi chuẩn giao thức cho Internet đánh số RFC - Khi lập trình database theo mơ hình client/server, giao thức trao đổi câu truy vấn tập ghi quy định hỗ trợ hệ quản trị Database DBMS thư viện lập trình Do đó, ta quan tâm thiết kế giao thức truyền thông ứng dụng database Khi lập trình có sẵn giao diện giúp ta thực thi việc tương tác Client Database server Trong môi trường lớp, lớp Middleware cung cấp giao diện để thực thi việc gọi hàm từ xa (Remote Procedure Call-RPC) Đây kĩ thuật cho phép ứng dụng client server tương tác với phương pháp gọi hàm thơng thường Nó cung cấp giao diện gọi hàm mà che công tác truyền thông client server việc truyền thông suốt người lập trình Kĩ thuật trình bày phần sau - Nói chung ta nên theo giao thức chuẩn có sẵn cho ứng dụng phổ biến Tuy nhiên, xây dựng ứng dụng riêng chưa có giao thức chuẩn ta phải thiết kế giao thức Phân loại giao thức:Có thể chia giao thức thành dạng : - Giao thức đồng (Synchronous Protocol) o Trong dạng giao thức này, q trình truyền thơng client server diễn theo hai chiều không đồng thời mà thực Mỗi bên sau truyền liệu thông báo cho bên ngừng lại để chờ bên gửi sang Trang 34 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 - Ví dụ giao thức kiểu : HTTP, POP, SMTP Giao thức không đồng (Asynchronous Protocol) o Đối với giao thức dạng khơng đồng bộ, client server đồng thời gửi thông tin cho mà không cần phải chờ đợi phản hồi bên o Các giao thức thường giao thức stateless TELNET, RLOGIN - Ngồi có dạng giao thức hybrid kết hợp hai dạng giao thức đồng không đồng Các yêu cầu giao thức Việc thiết kế giao thức tốt khó khăn phải đáp ứng yêu cầu sau: - Rõ ràng (well-defined) o Trong dạng tin truyền đi, trường liệu phải định nghĩa giao thức - rõ ràng kích thước, ý nghĩa, trường hợp liên quan đến bit o Giao thức ngơn ngữ, địi hỏi phải xác, khơng có nhập nhằng o Sử dụng phương pháp diễn tả mang tính hình thức (common formal decscription) dạng BNF (trong automata) o Nếu sử dụng ngơn ngữ mơ tả dạng ngơn ngữ phải trình bày tài liệu giao thức (để người đọc hiểu được) o Nên sử dụng ví dụ minh họa cho giao thức CHƯƠNG III PHÂN TÍCH THIẾT KẾ CHƯƠNG TRÌNH 3.1 MỤC ĐÍCH CỦA ĐỀ TÀI Trang 35 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 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  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 GIAO DIỆN VÀ SỬ DỤNG CHƯƠNG TRÌNH: 3.3.1 Giao diện: Trang 36 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.3.1.1Chương trình Server : Hình III - Giao diện chương trình Server Code sử dụng Server : 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 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() Trang 37 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 { 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; } 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; Trang 38 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 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(); stmWriter.Close(); stmReader.Close(); tcpListener.Stop(); } } } void set1(string s) { if (InvokeRequired) { object[] pList = { s }; lblMessage.BeginInvoke(new UpdateListBoxCallBack(OnUpdateLabel), pList); } else Trang 39 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 { 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 { 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) Trang 40 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 { 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 PLinh - DLinh - Kien 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) { txtFileName.Clear(); } } } Trang 41 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.3.1.2 Chương trình Client Hình III - Giao diện chương trình Client Code sử dụng Client 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); 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; Trang 42 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 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(); stmReader.Close(); } } public void Start(object sender, EventArgs e) { 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 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(); } private void clearport(object sender, EventArgs e) { port.Clear(); } Trang 44 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 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) { } } } Trang 45 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.3.2 Sử dụng chương trình: Tại Server: 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 Tại 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 Trang 46 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 tập lớn nhóm chúng em có củng cố lại kiến thức học Chương trình nhóm cịn nhiều hạn chế mong Thầy 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 ứng dụng dễ dàng mang lại hiệu truyền file Trang 47 ... Trang 35 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 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... 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 "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... biết socket nhận liệu Hà Nội, 01/05/2012 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 3.3.1. 1Chương trình Server : 37 3.3.1.2 Chương trình

Ngày đăng: 14/11/2017, 15:57

Từ khóa liên quan

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

  • Đang cập nhật ...

Tài liệu liên quan