معالجة الويب

مقدمة :

 

دعنا نعرف بعض المصطلحات التي نستخدمها قبل أن نبدا هذا الموضوع :

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 -  هذا يختلف عن لوحات الحاسب الذي العادي فاللوحة مجرد رقم – فهو ببساطة يحدد التطبيق .

 

حل شفرة الاسم Name Resolution :

وكما علمنا IP قد يكون رقم أو اسم والاسم هو الغطاء الخارجي للرقم ولا تفهمه الآلة وتوجد طريقتين لتحويل الأسماء للأرقام الرباعية السابقة القديمة  وهي تخزين كل في ملف عناوين نصي يسمي HOSTS وفي نظام Unix يوجد هذا الملف في فهرس مشاركة ، وفي ويندوز 95 يوجد هذا الملف في فهرس ويندوز في كل آلة علي الشبكة وفي وينوز الشبكات Windows NT وضع resides في Winnt\system32\drivers\etc ولهذه الطريقة عيب أظنك عرفته لأنه يتصف بالمحلية وبالتالي يحتاج للتحديث ، والطريقة المتبعة تستخدم نظام يسمي Domain Name System ويشار إليه بـ DNS وهي قاعدة بيانات توزع تحوي كل عناوين الإنترنت المسجلة .

 

المقبس Shocket :

المقبس هو عبارة عن كل من عناوين IP و اللوحة port .

 

أنتجت ميكروسوفت أداتين هامتين للتعامل مع الإنترنت هما

أ- أداة الإنترنت Inet

ب- أداة WinSockt

 

أداة الإنترنت Inet

لعل الترجمة الحرفية لاسم الأداة يشير لوظيفة الأداة ، فالأداة تسمي أداة نقل الإنترنت ، و تستخدم العديد من بروتوكلات الإنترنت مثل 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 :

 

تتيح لك الأداة 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

 

 

الطرق Method  :

الطرق هي دوال معدة سلفاً تؤدي وظائف خاصة علي الأداة  وسوف نناقش أهم تلك الخواص :

 

تستخدم تلك الخاصية مع  فقط مع تطبيق السرفر 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

 

 

الأحداث Events :

الأحداث هي الشرارة التي تبدأ تشغيل الطرق

يقع هذا الحدث عندما يغلق الكمبيوتر البعيد الاتصال ويمكن استخدامه في نهاية الاتصال.

Close

ويقع لدي حدوث الاتصال بالكمبيوتر البعيد.

Connect

ويقع لدي يستقبل السرفر الاتصال من الكمبيوتر التابع .

ConnectionRequest

ويقع لدي استقبال بيانات من الكمبيوتر البعيد

DataArrival

 

   ملحوظة :  في حالة الأداة WinSocket عندما يرسل جهازك بيانات يسمي سرفر وعندما يستقبل يكون تابع . أما لفظ سرفر في حالة الأداة INET فهو الكمبيوتر البعيد الذي ترسل له أو تستقبل البيانات منه.

و الآن حمل:

 برنامج معد بفيجوال بيسك للأداة WinSocket يعمل كسرفر وكتابع  وفك شفرته

ملحوظة: هذا البرنامج ليس من عملي

 

 

فيجوال بيسك متقدم

صفحة البداية