منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
درس- تعلم كيف تصنع برنامج ftp بالتفصيل + مثال - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم مقالات VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=184)
+--- الموضوع : درس- تعلم كيف تصنع برنامج ftp بالتفصيل + مثال (/showthread.php?tid=5019)



درس- تعلم كيف تصنع برنامج ftp بالتفصيل + مثال - RaggiTech - 03-10-12

كاتب الموضوع : Islam Ibrahim


بسم الله الرحمن الرحيم


السلام عليكم ورحمة الله وبركاته

ارجوا من الادارة عدم غلق او حذف الموضوع بحجة انه مكرر لانه في النهايه لخدمة الاعضاء وللحفاظ علي الموضوع من الضياع.


كيف تصنع برنامج FTP في Vb.net

كاتب الدرس: احمد زكريا صالح(ahmed z s)
ما هو الاف تي بي
الاف تي بي هو برنامج لتعامل مع الملفات التي موجودة في سيرفر موقعك

فكرة عمل البنامج
الفكرة هي انك سترسل طلب الي الاف تي بي سيرفر وبه ما طلبت وبعد ذلك
سيرد عليك الاف تي بي سيرفر بالاستجابه وبها المعلومات التي طلبتها او ينفذ ما طلبت


اكواد صناعة البرنامج مع الشرح
System.Net.WebRequest.Create - System.Net.FtpWebRequest
خاصة بارسال طلب الي السيرفر(موقع ال اف تي بي) بالتعامل مع ملف معين مثلا لتحميل او للحذف او لانشاء ملف جديد مثل عند الابلود اقتباس:
[TABLE="width: 100%"]
[TR]
[TD="class: alt2"]
Dim clsRequest As System.Net.FtpWebRequest = (System.Net.WebRequest.Create


("ftp://" & "مكان الملف الذي تريد التعامل معه"))
[/TD]
[/TR]
[/TABLE]





clsRequest.Credentials - System.Net.NetworkCredential
هذه التعبير خاص باعطاء بيانات سيرفر الاف تي بي الخاص بك (اسم المستخدم والباسورد)
اقتباس:
[TABLE="width: 100%"]
[TR]
[TD="class: alt2"]clsRequest.Credentials = NewSystem.Net.NetworkCredential(‘User Name, Password)[/TD]
[/TR]
[/TABLE]



clsRequest.Method - System.Net.WebRequestMethods.Ftp
هذه الداله هي اهم دالة حيث انها هي التي ستحتوي الامر الذي تريد طلبة الي سييرفر الافتي بي

واهم الدوالات التي موجوده بها
لحذف ملف DeleteFile
لتحميل ملف DownloadFile
لعمل قائمة بالملفات والمجلدات الموجوده ListDirectory
لرفع ملف UploadFile
لحذف مجلد RemoveDirectory

اقتباس:
[TABLE="width: 100%"]
[TR]
[TD="class: alt2"]clsRequest.Method = System.Net.WebRequestMethods.Ftp.DeleteFile[/TD]
[/TR]
[/TABLE]

وبهذا الامر طلبنا حذف الملف الذي حددنا عندما ارسلنا الطلب بالاعلي

بعد ذلك نطلب من الاف تي بي سيرفر الاستجابة لما طلبنا
اقتباس:
[TABLE="width: 100%"]
[TR]
[TD="class: alt2"]Dim ftpWebResp As FtpWebResponse = clsRequest.GetResponse()[/TD]
[/TR]
[/TABLE]


الي الان قد انتهينا من حذف الملف لاننا طلبنا شئ من السيرفر ولا نريد ان يرسل لنا السيرفر شئ مثل عند تحميل ملف او نرسل لسيرفر شئ عند الرفع. هذه الطريقة تكفي عند طلب مسح ملف او مجلد او صنع مجلد جديد

فاذا اردت ان تحذف مجلد مثلا تغير الميثود من DeleteFile الي RemoveDirectory مع تغيير مسار
المجلد الذي حددنا في اول الدرس مع Create

بعد ان ارسلنا الطلب الي سيرفر الاف تي بي سيرد هذا السيرفر بالستجابة والتي هي

عند طلب رفع ملف بالدالة UploadFile سنكتب هذا الكود بعد الكود الذي بالاعلي معدا كود طلب الستجابة لاننا سنرفع ملف (اي اننا سنرسل له بيانات) (ولا نحتاج اي بيانات من السيرفر مثل كود الدونلود)
اقتباس:
[TABLE="width: 100%"]
[TR]
[TD="class: alt2"]
Dim Streamer As System.IO.Stream = clsRequest.GetRequestStream()
Dim bFile() As Byte = System.IO.File.ReadAllBytes("الملف الذي تريد التنزيل فيه مع الاسم
الذي تريد التنزيل به")
Streamer.Write(bFile, 0, bFile.Length
Streamer.Close()
Streamer.Dispose()
[/TD]
[/TR]
[/TABLE]

عند طلب تنزيل ملف سنستخدم الدالة DownloadFile و سنكتب هذا الكود بعد الكود الذي بالاعلي(في هذه الدالة نحتاج البيانات من السيرفر)
اقتباس:
[TABLE="width: 100%"]
[TR]
[TD="class: alt2"]Dim streamer As Stream = ftpWebResp.GetResponseStream()
Using fs As New IO.FileStream("مكان الملف", FileMode.Create)
Dim buffer(2047) As Byte
Dim read As Integer = 0[/TD]
[/TR]
[/TABLE]


الكود التالي سيظل يعمل Loop حتي يتم تجميع كل البيانات(Bytes)
اقتباس:
[TABLE="width: 100%"]
[TR]
[TD="class: alt2"]Do
read = streamer.Read(buffer, 0, buffer.Length)
fs.Write(buffer, 0, read)
Loop Until read = 0
fs.Flush()
fs.Close()
streamer.Close()
End Using[/TD]
[/TR]
[/TABLE]

عند طلب تجميع قائمة بالملفات والمجلدات الموجودة في السيرفر نستخدم الدالة ListDirectory سنكتب هذا الكود بعد الكود الذي بالاعلي(في هذه الدالة نحتاج البيانات من السيرفر مثل الدونلود)
Dim ftpWebResp As FtpWebResponse = clsRequest.GetResponse()
Dim streamer As Stream = ftpWebResp.GetResponseStream()
Dim reader As New StreamReader(streamer)
Dim LineRead As String
الكود التالي سيظل البرنامج يعمل loop حتي يتم تجميع كل الملفات والمجلدات في Listview
اقتباس:
[TABLE="width: 100%"]
[TR]
[TD="class: alt2"]Do Until reader.EndOfStream
LineRead = reader.ReadLine
ListView1.Items.Add(LineRead)
Loop
streamer.Close()[/TD]
[/TR]
[/TABLE]

هذا مثال من صنعي لبرنامج FTP

http://www.mediafire.com/download.php?joinlt3yozi



تم بحمد الله

تحياتي