معالجة الويب
دعنا نعرف بعض المصطلحات التي نستخدمها قبل أن نبدا هذا الموضوع :
1-
عنوان انترنت URL :
هي اختصار للكلمات Uniform
Resource Locator
و تعرف أيضاُ باسم عناوين صفحة الويب و هي وسيلة لمستخدمي الانترنت لإيجاد صفحات
الويب ، وقد تم التصميم الأصلي في معمل الفيزياء الدقيقة الأوربي ويشار إليه بـ CERN
في عام 1990م ويعبر عن طريقة لتضمين وثيقة HTML عنوان وثيقة أخري ، و
العنوان يحدد عناصر هامة للسرفر :
-
البروتوكول المستخدم .
- السرفر الذي يحوي الوثيقة واللوحة المفترض الاتصال بها للبروتوكول TCP و اسم المستخدم و كلمة المرور .
- اسم الفهرس الحاوي للوثيقة مقرونا باسم الفهرس الأب .
- اسم الوثيقة .
والصيغة هي :
Protocol:// [usernamw][:password][@]host[:port]/[directorypath/][filename]
2- TCP هو اختصار للكلمات Transmission Control Protocol و تعني بروتوكول التحكم في النقل ، ويشير المصطلح TCP/IP إلي تجمع من البروتوكولات –IP تعني بروتوكول انترنت Internet Protocol – و IP يستخدم عناوين خاصة من 8 بت فمثلاً : 206.210.64.181 يحدد اسم موقع ، وما ينبغي ملاحظته هو وجود 4 أرقام تفصل بينهم ثلاثة نقاط وأقصي قيمة هي 255 ولكن نظراً لوجود صعوبة لتذكر تلك الأرقام استخدم كلمات تسمي Top-level domain وقد نظمت الامتدادات لتشير لمؤسسات أو أهداف معينة مثلاُ
government |
Gov |
Commercial |
Com |
Educational institution |
edu |
network |
net |
Noncategorized organization |
org |
|
وهكذا |
وخارج الولايات المتحدة تضاف رمز الدولة مثلا eg
لمصر و sa للسعودية ، jp لليابان uk للمملكة المتحدة
ويستخدم البروتوكول TCP ما يعرف باللوحة TCP/IP
لتشغيل تطبيقات محددة علي كمبيوتر معين ، وكل مقبس socket ينسب لرقم لوحة port
(فيما عدا المقبسين المشتركين في لوحة) ، وعندما يطلب تطبيق موضوع علي كمبيوتر
تابع أو عادي Client الاتصال بتطبيق باستخدام مقبس علي لوحة معينة ، فإن السرفر server
يبحث في التطبيقات عن المقابس
المفتوحة التي تصغي listening لطلب الاتصال حتي يجد التطبيق باستخدام اللوحة port
التي تم تحديدها من جانب الكمبيوتر التابع ومن ثم يمر الطلب للتطبيق ، ومعظم
تطبيقات السرفرات تحدد أرقام معينة
للوحات ports لديها ، وهذا يتيح للمستعرض – فيما عدا أن اللوحة تكون مستخدمة-
مثلا الاتصال علي اللوحة 80 بالنسبة HTTP :
80 |
HTTP(WWW) |
20 |
FTP |
21 |
FTP |
70 |
Gopher |
25 |
SMTP(e-mail) |
110 |
POP3 |
23 |
Telnet |
43 |
Whois |
79 |
Finger |
وعلي ذلك IP يحدد الآلة و تحدد لوحة IP
تحدد التطبيق الذي يعمل علي الألة المضيفة host - هذا يختلف عن لوحات الحاسب الذي العادي
فاللوحة مجرد رقم – فهو ببساطة يحدد التطبيق .
وكما علمنا IP قد يكون رقم أو اسم والاسم
هو الغطاء الخارجي للرقم ولا تفهمه الآلة وتوجد طريقتين لتحويل الأسماء للأرقام
الرباعية السابقة القديمة وهي تخزين
كل في ملف عناوين نصي يسمي HOSTS وفي نظام Unix يوجد هذا الملف في فهرس
مشاركة ، وفي ويندوز 95 يوجد هذا الملف في فهرس ويندوز في كل آلة علي الشبكة وفي
وينوز الشبكات Windows NT وضع resides في Winnt\system32\drivers\etc ولهذه الطريقة عيب أظنك
عرفته لأنه يتصف بالمحلية وبالتالي يحتاج للتحديث ، والطريقة المتبعة تستخدم نظام
يسمي Domain Name System ويشار إليه بـ DNS وهي قاعدة بيانات توزع
تحوي كل عناوين الإنترنت المسجلة .
المقبس هو عبارة عن كل من عناوين IP و
اللوحة port .
أنتجت ميكروسوفت أداتين هامتين للتعامل مع الإنترنت هما
أ- أداة الإنترنت Inet
ب- أداة WinSockt
لعل الترجمة الحرفية لاسم الأداة يشير لوظيفة
الأداة ، فالأداة تسمي أداة نقل الإنترنت ، و تستخدم العديد من بروتوكلات الإنترنت
مثل Ftp و Http و Gopher ، وتتمتع بالقدرة علي
الضبط التلقائي للبروتوكول ، كما يمكنك أن الاتصال بآي موقع يعتمد تلك
البروتوكولات واستدعاء retrieve
الملفات باستخدام آي من الأمرين Excute أو OpenURL و
هي تمكنك من :
-
إضافة آي مستعرض من نوع FTP
- إنشاء تطبيق يحمل الملفات أوتوماتيكياً من مواقع FTP .
- اسناد الموقع للرسوم و تحميل الرسوم فقط .
- تقديم عرض لبيانات تفاعلية يمكن استدعائها – Retrieve – أو استردادها من الموقع .
العملية الاساسية :
تعتمد وظيفة الأداة علي البروتوكول الذي تستخدمه ، لأن البروتوكلين
يختلفان بعض الشئ ، فمثلاً الأمر GetHeader يعمل فقط مع البروتوكول من
النوع HTTP ، بينما توجد بعض
الإجراءات المشتركة بين كل البروتوكولين الشائعين (
FTPو HTTP) هم :
-
ضبط الخاصية AccessType علي سرفر بروكسي صحيح Proxy Server
.
- استخدام الأمر أو الطريقة OpenURL للولوج لعنوان انترنت URL صحيح .
- استخدام الأمر Execute مع عنوان انترنت صحيح وأمر يتناسب مع البروتوكول.
-
استخدام الأمر GetChunk لاستدعاء بيانات الذاكرة
البينية Buffer .
و إذا رغب المستخدم في الولوج إلي موقع فينبغي
أن يضبط خاصية اسم المستخدم UserName
و خاصية كلمة المرور Password ، ولكن العديد من المواقع تسمح بالولوج المجهول anonymous
مثل موقع ميكروسوف ftp.microsoft.com حيث يكتب anonymous لاسم المستخدم و
بريده الاليكتروني ككلمة مرور
الطرق أو الأوامر Methods :
الوصف |
الأمر أو الطريقة |
|
Inet1.OpenUrl url ,datatype والبارامتر datatype يأخذ قيمتين الأولي
وهي الحرفية icString
و الثانية الثائية icByteArray
والأولي هي الفعالة وتستخدم مع
البيانات النصية مثل
الملفات التي امتداها txt
أو الملفات التي امتدادها htm
...... أما ملفات الصور و الملفات التنفيذية فتحمل علي أنها icByteArray
، وفي حالة عدم استخدام url
فإنه يستخدام آخر url
أدخل للخاصية . Inet1.OpenURL("ftp.microsoft.com") ولكن
لاحظ أنه ينبغي لفك من وعاء تضع فيه البيانات مثل صنوق نص و تصبح الصيغة الصحيحة هي : Text1.Text=
Inet1.OpenURL("ftp.microsoft.com") وبالطبع تعتبر الأداة أن نوع البيانات هي
بيانات حرفية لأننا لم نكتب
قيمتها فتستخدم القيمة الابتدائية لها أما إذا كنت تحمل صورة فيجب أن تكتب
الصيغة كما يلي : Pictur1.Picture=
Inet1.OpenURL("ftp.microsoft.com"\ pic.gif) ويمكنك
أن تستخدم الطريقة OpenURL
مع عنوان انترنت يسمح بإلحاق البيانات ، مثل عناوين الانترنت التي تسمح بالبحث
القياسي ، فمثلاُ الشفرة التالية تستخدم محرك بحث اسمه search.exe مع تنفيذ الشرط “find=Maui” strURL =
"http://www.howzit.com/cgi-bin/search.exe?find=mui" If Inet1.StillExecuting Then Text1.Text = Inet1.OpenURL(strURL) End If |
OpenURL |
|
تستخدم الطريقة Execute مع كل من البروتوكلولين FTP و HTTP أ-
مع
البروتوكول FTP
Inet1.Execute
URL ,Operation ,Data , RequestHeaders البارامتر URL يشير إلي عنوان الانترنت البارامتر operation و يشير لأحد الأوامر
المطلوب تنفيذها وهي تشبه أوامر دوس
وهي |
Execute |
|
وتستخدم لتغيير الفهرس الحالي – السرفر – إلي
فهرس آخر Inet1.Execute “ftp.microsoft.com” , “CD “ & “softlib” لاحظ أ
ضرورة وجود فراغ بعد الأمر CD bussys/ deskapps/ developr/ dirmap.htm kbhelp/ misc/ peropsys/ products/ reskit/ services/ softlib/ Inet1.Execute
“ftp.microsoft.com” , “CD “ & “kbhelp” moneyswitcher.exe npdck.exe |
CD |
|
يتراجع عن
الفهرس الحالي للفهرس الأب الحاوي له – علي السرفر – و بالطبع ليس له بارامترات Inet1.Execute “CDUP” وهو يشبه
أمر دوس CD.. |
CDPU |
|
ويستخدم
لحذف ملف من علي الفهرس النشط حالياُ علي السرفر Inet1.Execute “DELETE “ & “MyFile.txt” |
DELETE |
|
يبحث عن
الملفا الموجودة في الفهرس النشط حالياًُ علي السرفر – يقصد بذلك الفهرس الذي تم
التوجه إليه بالأمر CD
، ويمكنك أن تحدد اسم الفهرس
المطلوب استعراض محتوياته بكتابة اسم الفهرس بعد من الأمر Inet1.Execute “DIR “ & “mydocs” وهو
يستعرض الملفات الموجودة بالسرفر علي الفهرس mydocs |
DIR |
|
ويستخدم في تحميل أو استيراد ملف موجود علي
السرفر وحفظه علي القرص الثابت و صيغته Inet1.Execute “GET
file1 file2” وهو يقوم
بتحميل الملف file1
من علي الفهرس النشط بالسرفر إلي القرص الثابت بجهازك فمثلاً : Inet1.Execute “GET
ServerFile LocalFile” وبالطبع
يمكنك إنشاء إجراء يقرأ كل
الملفات الموجودة بالفهرس ثم يقوم بتحميلها بجهازك عندما يفرغ بالطبع من
الخطوة السابقة و إلا سوف تحصل علي رسالة خطا تشير بأنه لا يزال ينفذ العملية
السابقة . |
GET |
|
يقوم
بإنشاء فهرس في الفهرس النشط علي
السرفر فمثللاً : Inet1.Execute “MKDIR
myDirName “ وبالطبع
هذا يتوقف علي نوع السماح الممنوح للمستخدم فالمستخدم المجهول لن يمكنه فعل ذلك
مع السرفرات التي تتطلب اسم مستخدم وكلمة مرور |
MKDIR |
|
ويستخدم
في نسخ ملفUpload - Publish من القرص الثابت إلي الفهرس
النشط علي السرفر وهو يعمل عكس
الأمر GET Inet1.Execute “GET
LocalFile ServerFile
“ |
PUT |
|
وهو يشبه
الأمر DIR |
LS |
|
يقوم بعرض
أو استعراض محتويات الفهرس الحالي
مع اسم الفهرس Inet1.Execute “PWD” |
PWD |
|
يغلق
الاتصال الحالي Inet1.Execute “QUIT” |
QUIT |
|
تشبه تما
الأمر GET |
RECV |
|
ويقوم
بإعادة تسمية ملف موجود فعلاُ علي السرفر بأسم جديد مثلاً: Inet1.Execute “RENAME
OldFileName NewFileName
“ |
RENAME |
|
ويستخدم
في حذف ملف من علي السرفر وهذا يتوقف علي مدي الصلاحية الممنوحة للمستخدم Inet1.Execute “RMDIR myDirName “ |
RMDIR |
|
وهو يشبه
الأمر PUT |
SEND |
|
يستعلم عن
حجم ملف مثلأ Inet1.Execute “SIZE largefile.txy “ |
SIZE |
|
مع ملاحظة
أنه إذا كان بروكسي السرفر CERN فإن الأمر Execute لن يكون متاحاً |
||
يستخدم
البروتوكول HTTP
اربع أوامر للتعامل مع البيانات |
استخدام الأمر Execute مع البروتوكول HTTP |
|
ويستخدم
في استيراد أو تحميل ملف من عنوان انترنت مثلاً : Inet1.Execute “http://www.microsoft.com” & “/default.thm” ,“GET" |
GET |
|
ويستخدم
في استيراد عناوين الملف الموجود العنوان Inet1.Execute “ HEAD” |
HEAD |
|
يقدم
بيانات إضافية تدعم الطلب من السرفر Inet1.Execute ,POST " ,strFormData |
POST |
|
ويستخدم
في استبدال ملف بآخر Inet1.Execute ,POST " ,”replace.htm” |
PUT |
|
باقي طرق الأداة :
وتستخدم في فتح اتصال مع
عنوان انترنت ويمكن أن يكون العنوان بارامتر Text1.Text = Inet1.OpenURL(strURL) |
OpenURL |
ويستخدم في استيراد إما كامل العنونة أو أو عنونة محددة ، فإذا لم
تستخدم أى عنونة محددة فيستعيد أشياء مثل التاريخ و Content-type و Server ...." |
GETHeader |
وتستخدم في استيراد البيانات من السرفر وتتطلب بارامترين الأول يحدد
حجم البيانات المستوردة و الثاني يحدد نوع البيانات و عادة تستخدم مع StateChanged للاستدلال علي بدء عملها
|
GetChunk |
وتستخدم لإلغاء الاتصال ووقف العملية المتداولة . |
Cancel |
أبدا مشروع جديد و ضع عليه أربع أزرار و أداة Internet وأداة قائمة وأداة نصي غني ، ونظمهم كما بالشكل التالي:
ثم قم بنسخ الشفرة التالية ووضعها في محرر
فيجوال بيسك
Private Sub Command1_Click()
Dim strDirString, strFilename As String
Dim intStart, intEnd As Integer
Inet1.UserName = "anonymous"
Inet1.Password = "بريدك الاليكتروني"
strDirString = Inet1.OpenURL("http://also.as/mbadr/index.html")
intStart = InStr(strDirString, """/")
While (intStart <> 0)
intEnd = InStr(intStart + 4, strDirString, """")
strFilename = Mid(strDirString, intStart + 2, intEnd - intStart - 2)
If InStr(strFilename, "/") = 0 Then
List1.AddItem strFilename
End If
intStart = InStr(intEnd + 4, strDirString, """/")
Wend
End Sub
Private Sub Command2_Click()
List1_DblClick
End Sub
Private Sub Command3_Click()
RichTextBox1.Text = Inet1.OpenURL("http://mbadr3630.bizland.com")
End Sub
Private Sub Command4_Click()
Dim bytData() As Byte
bytData() = Inet1.OpenURL("http://mbadr3630.bizland.com", icByteArray)
Open "e:\vb98\http\index.html" For Binary As #1
Put #1, , bytData()
Close #1
MsgBox "تم تنفيذ المهمة"
End Sub
Private Sub List1_DblClick()
Dim bytData() As Byte
If InStr(List1.Text, ".txt") <> 0 Then
RichTextBox1.Text = Inet1.OpenURL("ftp://http://also.as/mbadr/" & List1.Text)
Else
bytData() = Inet1.OpenURL("ftp://http://also.as/mbadr/" & List1.Text, icByteArray)
Open "e:\vb98\ftp\" & List1.Text For Binary Access Write As #1
Put #1, , bytData()
Close #1
MsgBox "تم التحميل يا صديقي"
End If
End Sub
مقترحات لتطوير البرنامج :
-
أضف مربع نص يستقبل منك عنوان الإنترنت
وضعه في متغير معرف حرفياً – string – استخدم مثلاً التعريف Dim
MyURL As String
- اجعل البرنامج يتعرف علي البرتوكول باستخدام الدالة InStr لتحديد “//” الموجودتين في كل عنوان وهي دالة تحدد رقم أول ظهور للحرفية و بالتالي اقرأ الجزء الموجود إلي يسار العنوان بالدالة left أو الدالة mid ثم حدد نوع البروتوكول .
-
طور البرنامج لينشر ملف من نوع FTP
(ضروري تحديد اسم المستخدم وكلمة المرور لأنك سوف تغير في الموقع يمكنك أن تفتح
موقع مجاني علي السرفر www.topcites.com
تتيح لك الأداة WinSock الاتصال بكمبيوتر بعيد Remote
أو سرفر و تبادل المعلومات معه باستخدم بروتوكول TCP أو البروتوكول UDP (User Datagram Protocol) ، وكليهما يمكنه إنشاء تطبيقات لكل من الكمبيوتر التابع client
والكمبيوتر البعيد Server
استخدامات الأداة :
-
إنشاء تطبيقات محلية تجمع معلومات
المستخدم قبل إرسالها للسرفر المركزي.
- إنشاء تطبيقات سرفر تعالج معلومات المستخدم.
- إنشاء تطبيقات المحادثة Chat .
إذا كنت تريد موافقة السرفر علي عمليتك أو تبادل معلومات كبيرة مثل
صورة ، فاختر البروتوكول FTP ، أما إذا كنت تريد متقطع intermittently أو علي مراحل أو يشعر كمبيوتر معين عندما يتم إنجاز
المهام استخدم البروتوكول UDP ، فهو يشبه إرسال بريد وليس تفاعل متواصل بينما TCP لا يوجد سقف للرسالة ، حيث
يتم تقسيم الرسائل الكبيرة لأجزاء و إرسالها حتي تكتمل ..
هذه الخاصية تخبرك بعدد البايتات المستقبلة حالياً في الذاكرة Buffer
وهي خاصية تقرأ فقط – آى لا يمكن تغييرها – والعدد الذي يعبر عن البياتات يكون من نوع Long Integer فمثلاً : Myvar=MyWinsockControl.BytesReceived وهذا يساعدك علي معرفة المعلومات الموجودة بالذاكرة . |
BytesReceived |
||
هذه الخاصية تسترجع returns اسم نظام المضيف المحلي وهي
للقراءة فقط وفي الظروف العادية تجد تلك الخاصية تستعيد اسم الكمبيوتر وهو الاسم
الذي اخترته لجهازك عند تركيب أو تنصيب ويندوز ، ويمكنك معرفته بفتح لوحة التحكم
واختيار شبكة الاتصال – تعريف . |
LocalHostName |
||
وهي تستعيد IP لجهازك في صيغته الرقمية وهي للقراءة فقط ونوع
ما تستعيده هو حرفي . Myvar= MyWinsockControl.LocalIP |
LocalIP |
||
تستعيد و تضبط set رقم اللوحة المحلية وهي خاصية (قراءة – كتابة)
ونوع ما تسترجعه Long Integer : Myvar= MyWinsockControl.LocalPort ولضبط الخاصية علي رقم
اللوحة أو المنفذ port رقم 1001 نكتب : MyWinsockControl.LocalPort=1001 |
LocalPort |
||
هذه الخاصية تضبط البروتوكول فلضبط الأداة علي البروتوكول FTP نكتب : MyWinsockontrol.Protocol=sckTCPProtocpl ولضبطها علي UDP نكتب : MyWinsockControl.Protocol=sckUDPProtocol ولمعرفة البروتوكول المستخدم Myvar=MyWinsockControl.Protocol |
Protocol |
||
وهي تستعيد و تضبط الكمبيوتر البعيد أو عنوانه ويمكن أن تكون رقمية
أو ودية –علي شكل اسم معروف – (www.microsoft.com) أو في صورة رقمية 192.143.29.47 ، مثلاً : Myvar= MyWinsockControl.RemoteHost ولضبطها علي عنوان معين : MyWinsockControl.RemoteHost=”www.bizland.com” MyWinsockControl.RemoteHost=”192.143.29.47” |
RemoteHost |
||
وهو يستعيد ويضبط رقم اللوحة أو المنفذ و القيمة المستعادة من نوع long integer فلقراءة رقم لوحة السرفر Myvar= MyWinsockControl.RemotePort ولضبط لوحة السرفر أو منفذه MyWinsockControl.RemotePort=1001 وبذلك يمكنك اختيار التطبيق الذي ترغب في الاتصال به علي السرفر . |
RemotePort |
||
تستعيد حالة الأداة علي هيئة عدد صحيح يعبر عن حالة الأداة: |
State |
||
مغلق |
sckClosed |
0 |
|
مفتوح |
sckOpen |
1 |
|
إصغاء |
sckListening |
2 |
|
ربط الاتصال |
sckConnetionPending |
3 |
|
جاري فك شفرة المضيف |
sckResolvingHost |
4 |
|
تم فك شفرة المضيف |
sckHostResolved |
5 |
|
جاري الاتصال |
SckConnecting |
6 |
|
تم الاتصال |
sckConnected |
7 |
|
الكمبيوتر المرافق أغلق الاتصال |
sckClosing |
8 |
|
يوجد خطأ |
sckError |
9 |
|
الطرق هي دوال معدة سلفاً تؤدي وظائف خاصة علي الأداة وسوف نناقش أهم تلك الخواص :
تستخدم تلك الخاصية مع فقط مع تطبيق السرفر FTP ، حيث تقبل طلب الاتصال
من الكمبيوتر التابع ، وحتي تستخدم تلك الخاصية يجب أن تكون الأداة في حدث الاتصال
ConnectionRequest وصيغته: Private Sub MyWinsockControl ConnectionRequest(ByVal requestedID as Long) MyWinsockControl.Accept End Sub |
Accept |
و تستخدم لغلق الاتصال بين السرفر والتابع : MyWinsockControl.Close |
Close |
وتستخدم في استعادة Retrieve بلوك البيانات الموجود حالياً في
الذاكرة Buffer و اختزانه في متعير من نوع variant
MyWinsockControl.GetData
myvar |
GetData |
وتستخدم علي تطبيق السرفر لجعله ينتظر لطلب الاتصال TCP
من الكمبيوتر التابع MyWinsockControl.Listen |
Listen |
وتستخدم لإرسال بيانات للكمبيوتر البعيد ويستخدم في حالة السرفر
والتابع معاً . MyWinsockControl.SendData
myvar |
SendData |
الأحداث هي الشرارة التي تبدأ تشغيل الطرق
يقع هذا الحدث عندما يغلق الكمبيوتر البعيد الاتصال ويمكن استخدامه
في نهاية الاتصال. |
Close |
ويقع لدي حدوث الاتصال بالكمبيوتر البعيد. |
Connect |
ويقع لدي يستقبل السرفر الاتصال من الكمبيوتر التابع . |
ConnectionRequest |
ويقع لدي استقبال بيانات من الكمبيوتر البعيد |
DataArrival |
ملحوظة : في حالة
الأداة WinSocket عندما يرسل جهازك بيانات يسمي سرفر وعندما
يستقبل يكون تابع . أما لفظ سرفر في حالة الأداة INET فهو الكمبيوتر البعيد الذي
ترسل له أو تستقبل البيانات منه.
و الآن حمل:
ملحوظة: هذا البرنامج ليس من عملي