Truyền file qua mạng lan
Trang 1NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 2NHẬN XÉT CỦA HỘI ĐỒNG BẢO VỆ
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 3MỤC LỤC
LỜI NÓI ĐẦU 6
TỔNG QUAN VỀ ĐỀ TÀI 7
CHƯƠNG 1 : TỔNG QUAN VỀ LẬP TRÌNH MẠNG 8
1.1 Giao thức TCP/IP 8
1.2 Socket 9
1.3 Port 9
1.4 Mô hình Client – Server 9
CHƯƠNG 2 : CƠ SỞ LÝ THUYẾT 11
2.1.Giới thiệu 11
2.2.Các thuộc tính yêu cầu 11
2.3.Kỹ thuật truyền file 11
2.4.Phương thức SERIALIZATION 11
2.5.Phương thức DESERIALIZATION 12
2.6.Phương thức gửi file 12
2.7.Phương thức nhận file 12
2.8.Kỹ thuật chia nhỏ và nối file 12
CHƯƠNG 3 : THIẾT KẾ VÀ XÂY DỰNG CHƯƠNG TRÌNH 13
3.1 Mô tả chức năng 13
3.2 Phân tích chức năng 14
CHƯƠNG 4 : TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ 17
4.1.Microsoft Visual Studio 2008 17
4.1.1.Giới thiệu Microsoft Visual Studio 2008 17
4.1.2.Các chức năng cơ bản Microsoft Visual Studio 2008 17
4.2.Giới thiệu NET framework & các thành phần chính 19
4.2.1.Giới thiệu NET framework 19
4.2.2.Các thành phần chính Net framework 19
4.3.Kết quả các chức năng của chương trình 23
4.3.1.Giao diện khi khởi động của chương trình 23
4.3.2.Giao diện khi khởi động của server 24
4.3.3.Chọn File muốn truyền 24
4.3.4.Giao diện khi Client chia File và gởi các packet đã chia đến Server 25
4.3.5.Thông báo gởi các packet đến Server thành công và bắt đầu nối Packet 25
4.3.6 Gởi toàn bộ nội dung của Folder đến Server 26
Trang 4CHƯƠNG 5 : KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI 27
5.1.Kết luận 27
5.2.Kết quả đạt được 27
5.2.1.Những vấn đề còn tồn tại 27
5.2.2.Hướng phát triển 27
TÀI LIỆU THAM KHẢO 28
Trang 5DANH MỤC HÌNH VẼ
Hình 1 : Mô Hình TCP/IP 8
Hình 2 : Cơ chế gọi hàm trong lập trình Socket 10
Hình 3 : Serialization Process 12
Hình 4 : Quy trình hoạt động Server 14
Hình 5 : Quy trình hoạt động client 16
Hình 6 : Các thành phần chính của Net Framework 20
Hình 7 : Giao diện khởi động chương trình 23
Hình 8 : Giao diện khi khởi động server 24
Hình 9 : Chọn file muốn truyền 24
Hình 10 : Giao diện khi Client chia file và gửi các packet đã chia đến Server 25
Hình 11 : Thông báo gửi các packet đến Server thành công và bắt đầu nối Packet 25
Hình 12 : Gửi toàn bộ nội dung của Folder đến Server 26
Hình 13 : Kết thúc quá trình gưi nội dung Folder đến Server 26
Trang 6LỜI NÓI ĐẦU
Hiện nay, vấn đề toàn cầu hoá thông tin và tốc độ phát triển của khoa học công nghệ diễn ra một cách nhanh chóng Một kỷ nguyên mới được mở ra–kỷ nguyên của xã hội hoá thông tin Công nghệ thông tin và truyền thông phát triển đã đưa thế giới bước sang thời đại mới – thời đại của công nghệ thông tin Việc nắm bắt và ứng dụng công nghệ thông tin trong các lĩnh vực khoa học, kinh tế, xã hội đem lại cho các doanh nghiệp
Nhằm tìm hiểu thấu đáo và sâu hơn một trong số các phương pháp truyền file qua mang, nhóm chúng em đã chọn đề tài : “Xây dựng ứng dụng truyền file qua mạng LAN “
sử dụng ngôn ngữ C#
Với lập trình socket TCP sẽ bắt buộc các máy đó phải nối mạng được với nhau Ta
đã thấy các máy muốn trao đổi dữ liệu mạng, chúng sẽ tạo ra mỗi phía một socket và trao đổi dữ liệu bằng cách đọc/ghi từ socket TCP Khi một chương trình tạo ra một socket, một định danh số gán cho socket Việc gán số hiệu cổng này cho socket có thể được thực hiện bởi chương trình hoặc hệ điều hành Trong mỗi gói tin mà socket gửi đi chưa hai thông tin để xác định đích đến của gói tin :
• Một địa chỉ mạng để xác định hệ thống sẽ nhận gói tin
• Một số định danh cổng để nói xác định cho hệ thống đích biết socket TCP nào sẽ nhận dữ liệu
Báo cáo sau đây trình bày về đề tài: “Xây dựng ứng dụng truyền file qua mạng LAN” Trong khuôn khổ báo cáo, chúng em thực hiện tìm hiểu về các thuật toán cắt xén file và ghép nối file và xây dựng ứng dụng
Trang 7TỔNG QUAN VỀ ĐỀ TÀI
1 Bối cảnh và lý do thực hiện đề tài
Với sự phát triển nhanh chóng của Internet như hiện nay, sự truyền file qua mạng trở thành một nhu cầu bức thiết Sự cần thiết của nó ai cũng hiểu được Hiện nay đã có nhiều chương trình hỗ trợ việc truyền file trên mạng, chẳng hạn như FTP… Tuy nhiên, không cần thiết phải sử dụng những chương trình có sẵn mà ta có thể xâu dựng một chương trình tương tự như thế Chương trình DATruyenFile là được xây dựng với mục đích như thế và nhằm để hiểu rõ được cơ chế truyền file và áp dụng những kiến thức đã học được vào việc lập trình ứng dụng mạng
2 Mục tiêu của đề tài
Đề tài nhằm tìm hiểu được cơ chế truyền file qua mạng LAN, thông qua đó tìm hiểu được các giải thuật, thuật toán về cơ chế cắt ghép, chia nhỏ và nối file Qua đó xây dựng chương trình ứng dụng lập trình Socket TCP cho phép người dùng truyền file qua mạng từ máy Client đến Server
3 Phương pháp triển khai đề tài
Lập trình Socket Client – Server
Tìm hiểu các cơ chế truyền file, thuật toán cắt nối file
Thiết kế và lập trình ứng dụng, xây dựng ứng dụng truyền file qua mạng LAN trong mô hình Client – Server
4 Kết cấu của đồ án
Đồ án gồm các phần :
Tổng quan về lập trình mạng
Cơ sở lý thuyết
Thiết kế và xây dựng chương trình
Triển khai và đánh giá kết quả
Kết luận và hướng phát triển đề tài
Trang 8CHƯƠNG 1 : TỔNG QUAN VỀ LẬP TRÌNH MẠNG
1.1 Giao thức TCP/IP.
Bộ giao thức TCP/IP, ngắn gọn là TCP/IP (tiếng Anh: Internet protocol suite
hoặc IP suite hoặc TCP/IP protocol suite - bộ giao thức liên mạng), là một bộ các giao
thức truyền thông cài đặt chồng giao thức mà Internet và hầu hết các mạng máy tính thương mại đang chạy trên đó Bộ giao thức này được đặt tên theo hai giao thức chính
của nó là TCP (Giao thức Điều khiển Giao vận) và IP (Giao thức Liên mạng) Chúng
cũng là hai giao thức đầu tiên được định nghĩa Để cho các máy tính trao đổi dữ liệu với
nhau TCP/IP dử dụng mô hình truyền thông 4 tầng hay còn gọi là Mô Hình DoD( Mô hình của Bộ Quốc Phòng Mỹ) Các tầng trong mô hình này theo thứ tự từ trên xuống là :
• Tầng ứng dụng ( Application Layer)
• Tầng giao vận ( Transport Layer)
• Tầng lien mạng ( Internet Layer)
• Tầng giao diện mạng (Network Interface Layer)
RING
TOKEN RING
FRAME RELAY
Trang 91.2 Socket
Socket là một cổng logic mà một chương trình sử dụng để kết nối với một chương trình khác chạy trên một máy tính khác trên Internet Chương trình mạng có thể sử dụng nhiều Socket cùng một lúc, nhờ đó nhiều chương trình có thể sử dụng Internet cùng một lúc Có 2 loại Socket:
• Stream Socket: Dựa trên giao thức TCP( Tranmission Control Protocol) việc truyền
dữ liệu chỉ thực hiện giữa 2 quá trình đã thiết lập kết nối Giao thức này đảm bảo dữ liệu
được truyền đến nơi nhận một cách đáng tin cậy, đúng thứ tự nhờ vào cơ chế quản lý luồng lưu thông trên mạng và cơ chế chống tắc nghẽn
• Datagram Socket: Dựa trên giao thức UDP( User Datagram Protocol) việc truyền dữ
liệu không yêu cầu có sự thiết lập kết nối giữa 2 quá trình Ngược lại với giao thức
TCP thì dữ liệu được truyền theo giao thức UDP không được tin cậy, có thế không đúng trình tự và lặp lại Tuy nhiên vì nó không yêu cầu thiết lập kết nối không phải có những
cơ chế phức tạp nên tốc độ nhanh…ứng dụng cho các ứng dụng truyền dữ liệu nhanh như chat, game…
1.3 Port
Port xách định duy nhất một quá trình (process) trên một máy trong mạng Hay nói cách khác là cách mà phân biệt giữa các ứng dụng
VD: Khi máy bạn chạy nhiều ứng dụng mạng như Yahoo,Firefox, game
online… Ví dụ chương Yahoo sử dụng ( port 5150 hay 5050) thì khi ai đó gửi tin nhắn đến cho bạn, lúc tin nhắn đến máy bạn nó sẽ dựa vào port để nhận biết đó là chương trình Yahoo ( port 5150) chứ ko pải là chương trình khác Sau đó thông tin sẽ đc xử lý và hiễn thị tin nhắn lên
Một TCP/IP Socket gồm một địa chỉ IP kết hợp với một port ? Xác định duy nhất một tiến trình (process ) trên mạng.Hay nói cách khác Luồng thông tin trên mạng dựa vảo
IP là để xác định máy một máy trên mạng còn port xác định 1 tiến trình trên 1 máy
1.4 Mô hình Client – Server
Quy trình hoạt động của ứng dụng Server – Client như sau: Server có nhiệm vụ của là lắng nghe, chờ đợi kết nối từ Client trên địa chỉ IP của mình với PORT được quy
định sẵn Khi client gởi dữ liệu tới Server thì nó phải giải quyết một công việc là nhận
dữ liệu đó -> xử lý -> trả kết quả lại cho Client.
Client là ứng dụng được phục vụ, nó chỉ gởi truy vấn và chờ đợi kết quả từ Server
Trang 10CƠ CHẾ GỌI HÀM TRONG LẬP TRÌNH SOCKET
SOCKET()SOCKET()
CONNECT()
CONNECT()
WRITE()WRITE()
READ()READ()
CLOSE()CLOSE()
SOCKET()SOCKET()
BIND()BIND()
LISTEN()LISTEN()
ACCEPT()ACCEPT()
READ()READ()
WRITE()WRITE()
CLOSE()CLOSE()
CLIENT
Hình 2 : Cơ chế gọi hàm trong lập trình Socket
Trang 11CHƯƠNG 2 : CƠ SỞ LÝ THUYẾT
2.1 Giới thiệu
Trao đổi dữ liệu giữa hai máy tính trong mạng thực chất là sự trao dổi dữ liệu giữa hai chương trình ứng dụng chạy trên hai máy tính đó Trong đó, một chương trình được gán nhãn là server và một chương trình được gán nhãn là client Có nhiều phương pháp
để xây dựng úng dụng mạng nhưng phương pháp phổ biến là lập trình ứng dụng mạng dựa trên cơ chế Socket Trong chương này sẽ trình bày một ứng dụng của lập trình Socket TCP là xây dựng chương trình truyền file qua mạng LAN giữa hai máy tính bằng C# Socket TCP
2.2 Các thuộc tính yêu cầu
Phương thức truyền file được sử dụng phải đảm bảo an toàn, đảm bảo sự tin cậy
Các thuộc tính được yêu cầu là :
Nguyên vẹn : Người nhận cần có khả năng xác định được thông tin có còn nguyên vẹn sau quá trình truyền không
Xác thực : Người gởi cần có khả năng xác định file đã gởi thành công hay chưa
2.3 Kỹ thuật truyền file
Có nhiều phương pháp để xây dựng chương trình truyền file qua mang Nhưng phổ biến nhất là lập trình mạng dựa trên cơ chế Socket Chương trình gán nhãn Server khởi tạo kết nối và lắng nghe Chương trình gán nhãn Client Sử dụng lớp tcpclient để kết nối dến server dùng Networkstrem để tiến hành truyền file gửi tên của file theo phương thức Serialize Server tiến hành nhận tên file bằng phương thức Deserialize
2.4 Phương thức SERIALIZATION
Serialization(System.Runtime.Serialization) là một quá trình để chuyển đổi một cấu trúc
dữ liệu hoặc đối tượng thành một định dạng có thể lưu trữ được (ví dụ như trong một file,
bộ nhớ, hoặc vận chuyển thông qua mạng) Mọi đối tượng muốn được serialize đều phải được khai báo kèm theo attribute [Serializable] Ngoài ra, mọi kiểu dữ liệu được sử dụng trong đối tượng cũng phải tuân theo quy tắc này
Attribute [Serializable] có nghĩa là sắp xếp theo thứ tự Khi ta muốn lưu một đối tượng xuống tập tin trên đĩa để lưu, ta phải định ra trình tự của dữ liệu trong đối tượng
Khi cần tái tạo lại đối tượng từ thông tin trên tập tin đã lưu trữ, ta sẽ “nạp” đúng theo trình tự đã định trước đó Nói chính xác hơn, Serialize là tiến trình biến đổi trạng
Trang 12thái của đối tượng theo một định dạng có thể được lưu trữ hay dịch chuyển(transfer) Nếu muốn loại trừ một thành phần (method, field, property,…) không muốn được serialize, bạn có thể đánh dấu chúng bằng attribute [NonSerialized].
2.6 Phương thức gửi file
o Dung networkstrem để tiến hành truyền file
o Gửi tên của file theo phương thức serialize
o Chia 1 file cần truyền gói nhỏ mỗi gói có kích thước 2048 byte sau đó tiến hành truyền từng gói nhỏ cho đến khi hết tập tin thì thôi Trong đó ghi và đọc file theo phương thức Stream
2.7 Phương thức nhận file
Nhận từng gói nhỏ mỗi gói có kích thước 2048 byte cho đến khi kết thúc file Trong
đó ghi và đọc file theo phương thức Stream
2.8 Kỹ thuật chia nhỏ và nối file
Kỹ thuật chia nhỏ và nối File ( Split and Join File) chia 1 File cần truyền gói nhỏ mỗi gói có kích thước 2048 byte sau đó tiến hành truyền từng gói nhỏ cho đến khi hết tập tin thì thôi
OBJECT
DATABASEDATABASE
FILEFILE
MEMORYMEMORY
Hình 3 : Serialization Process
Trang 133.1 Mô tả chức năng
Chương trình cho phép Client gởi File hoặc toàn bộ nội dung của Folder đến Server Tuỳ thuộc dung lượng của File muốn truyền sẽ chia thành số lượng Packet khác nhau Processbar cho biết tiến trình gởi File cho Server Sau khi truyền thành công các Packet Server sẽ nối các Packet lại thành File ban đầu Dung lượng truyền theo Folder là không giới hạn
Trang 143.2 Phân tích chức năng
Quy trình hoạt động của Chương trình “ Truyền File Qua Mạng LAN”
SERVERSERVER
Hình 4 : Quy trình hoạt động Server
Tiếp tục?
Tiếp tục?
Đúng
Bắt đầuBắt đầu
Tao TCPListerner và lắng nghe từ Client
Tao TCPListerner và lắng nghe từ Client
Chấp nhận kết nối từ client
Chấp nhận kết nối từ client Báo lỗiBáo lỗi
Đợi Client gởi FileĐợi Client gởi File
Nhận File hoặc Thư mụcNhận File hoặc Thư mục
Sai
Sai
Đúng
Kết thúcKết thúc
Kết thúcKết thúc
Nối File và Thư mục vừa
nhậnNối File và Thư mục vừa
nhận
Trang 15Bắt đầuBắt đầu
Tạo TCPClient kết vối đến Server
Tạo TCPClient kết vối đến Server
Kết nối thành công
Kết nối thành công Báo lỗiBáo lỗi
Kết thúcKết thúcChọn File hoặc thư mục
Sai
Sai Đúng
Đúng
Trang 16Hình 5 : Quy trình hoạt động client
Trang 17CHƯƠNG 4 : TRIỂN KHAI VÀ ĐÁNH GIÁ KẾT QUẢ
4.1 Microsoft Visual Studio 2008
4.1.1 Giới thiệu Microsoft Visual Studio 2008
Microsoft Visual Studio 2008 là môi trường phát triển tích hợp chính (Integrated Development Environment (IDE) được phát triển từ Microsoft Đây là một loại phần mềm máy tính có công dụng giúp đỡ các lập trình viên trong việc phát triển phần mềm.Các môi trường phát triển hợp nhất thường bao gồm:
Một trình soạn thảo mã (source code editor): dùng để viết mã.Trình biên dịch (compiler) và/hoặc trình thông dịch (interpreter).Công cụ xây dựng tự động: khi sử dụng
sẽ biên dịch (hoặc thông dịch) mã nguồn, thực hiện liên kết (linking), và có thể chạy chương trình một cách tự động
Trình gỡ lỗi (debugger): hỗ trợ dò tìm lỗi.Ngoài ra, còn có thể bao gồm hệ thống quản lí phiên bản và các công cụ nhằm đơn giản hóa công việc xây dựng giao diện người dùng đồ họa (GUI)
Nhiều môi trường phát triển hợp nhất hiện đại còn tích hợp trình duyệt lớp (class browser), trình quản lí đối tượng (object inspector), lược đồ phân cấp lớp (class hierarchy diagram), để sử dụng trong việc phát triển phần mềm theo hướng đối tượng
Như vậy, Visual Studio 2008 được dùng để phát triển console (thiết bị đầu cuối – bàn giao tiếp người máy) và GUI (giao diện người dùng đồ họa) cùng với các trình ứng dụng như Windows Forms, các web sites, cũng như ứng dụng, dịch vụ wed (web applications, and web services) Chúng được phát triển dựa trên một mã ngôn ngữ gốc (native code ) cũng như mã được quản lý (managed code) cho các nền tảng được được hỗ trợ Microsoft Windows, Windows Mobile, NET Framework, NET Compact Framework
và Microsoft Silverlight.Visual Studio hỗ trợ rất nhiều ngôn ngữ lập trình, có thể kể tên như sau: C/C++ ( Visual C++), VB.NET (Visual Basic NET), va C# (Visual C#)… cũng như hỗ trợ các ngôn ngữ khác như F#, Python, và Ruby; ngoài ra còn hỗ trợ cả XML/XSLT, HTML/XHTML, JavaScript và CSS
C# mang đến sức mạnh của C++ cùng với sự dễ dàng của ngôn ngữ Visual Basic
4.1.2 Các chức năng cơ bản Microsoft Visual Studio 2008
Visual Studio 2008 có những chức năng cơ bản sau: soạn thảo mã (code editor), trình gỡ lỗi (debugger) và thiết kế (Designer) Ở đây tôi chỉ trình bày một số công cụ quan trọng của chức năng Designer – đây được xem là một trong những điểm nhấn của Microsft Visual Studio