تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
سلسلة دروس في إحتراف الوينسوك ( موضوع متجدد )
#1
بسم الله الرحمن الرحيم

دورة إحتراف الوينسوك


المحتويات :

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


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


في هذه المقالة توجد فكرة طاغية على مجمل موضوعاتها وهي الإتصال العكسي ، لأنه هي التقنية المستخدمة في كل البرامج الحديثة ، ولكن لا مانع من شرح الإتصال المباشر كنوع من الفائدة وزيادة المعلومات ، وليس لأنها فقط للفائدة يعني أن لا يقوم القارئ بالإطلاع عليها ، بالعكس هي ضرورية أكثر من الإتصال العكسي لأنها هي الأساس في الإتصال .

[COLOR="#FF0000"]
الدرس الأول :

الجزء الأول :
[/COLOR]

شروحات الوينسوك تختلف من شخص لآخر ، فكل منا يفهمها حسب طريقته .


الوينسوك هي أداة مرفقة مع الفيجيول بيسيك تقوم بعمل شبكة محلية مكونة من :
اقتباس: عميل / خادم .
عميل / عميل .

وقد تستخدم للتحكم في الأجهزة عن بعد ، أو حتى للربط بين برنامجين في نفس الحاسوب ،
الوينسوك تقوم بتنفيذ الأوامر فقط ، أي أنها لا تستطيع فتح سواقة الأقراص بدون أوامر خارجية ، فللوهلة الأولى يظن المبرمج أن الوينسوك تقوم بجميع المهمات الصعبة ، ولكن هي بالحقيقة لا تقوم سوى بعدة أوامر ومنها :

الإتصال .
إقتباس : نقل البيانات SendData .
إستقبال البيانات GetData .


بالنسبة للوينسوك ، فهناك مشكلة عدم وجودها مع إصدارات الويندوز ، و يحتاج المبرمج إلى إرفاقها أو دمجها مع برنامجه لكي يعمل .
ويمكن أيضا برمجتها بواسطة دوال API وإنشاء الــ Sockets .

[COLOR="#FF0000"]الشرح :
[/COLOR]

الإتصال ( Connect ) :


في حدث الإتصال يلزم 4 أمور رئيسية :
اقتباس: 1- إغلاق أي إتصال سابق
2- تحديد المنفذ .
3- تحديد عنوان الأي بي IP Address .
4- الإتصال.

سؤال يطرح نفسه : لماذا يجب إغلاق أي إتصال سابق ؟؟

لكي يتم تجديد الإتصال ، و إغلاق أي إتصال غير مكتمل وأي إتصال قديم.

وتتم عملية الإتصال كالتالي :

PHP كود :
Winsock1.close   
Winsock1
.Connect "127.0.0.1"303 
ومن الممكن أن توضع في العميل والخادم في الحالات التالية :

إقتباس : في الخادم : عند الإتصال المباشر من العميل إلى الخادم .
في العميل : عند الإتصال العكسي من الخادم إلى العميل .


الإنصات ( Listen ) :

عملية الإنصات هي حجز المنفذ الذي سيتم تلقي طلب الإتصال من خلاله وتكون بخطوتين :

اقتباس: تحديد المنفذ .
الإنصات .

وتتم كالتالي :


PHP كود :
Winsock1.LocalPort 303  
Winsock1
.Listen 

عملية الإنصات أيضا من الممكن أن توضع في كلا البرنامجين ( العميل / الخادم ) .



قبول طلب الإتصال ( Accept ) :

تتم عملية قبول طلب الإتصال بخطوتين :

إقتباس : إغلاق أي إتصال جديد .
قبول طلب الإتصال .

وتتم كالتالي :


PHP كود :
Winsock1.close  
Winsock1
.Accept requestID 

وتوضع شيفرة قبول طلب الإتصال في حدث الوينسوك Connection Request .



تحديد البروتوكول :

بروتوكولات الوينسوك عبارة عن بروتوكولين مختلفين تماما وهما :

إقتباس : TCP .
UDB .

البروتوكول TCP :

يستخدم إجراءات تأكيد وصول البيانات كاملة وعند فشل الإرسال تتم الإعادة من جديد .

البروتوكول UDP :

يعمل على توصيل البيانات بسرعة بدون التحقق من فشل الإرسال أو لا .

ولكن البروتوكول المعتمد في الإتصال والتواصل هو TCP ويكون في الغالب هو الأصل .

وتتم عملية تحديد البروتوكول كالتالي :

PHP كود :
Winsock1.Protocol sckTCPProtocol 
أو


PHP كود :
Winsock1.Protocol sckUDPProtocol 


إرسال البيانات ( SendData ) :

تتم عملية إرسال البيانات لكي يقوم الخادم بتنفيذ الأوامر المطابقة للبيانات المستلمة .

وتتم بخطوتين :

إقتباس : تجاوز الخطأ عند وجود أي خطأ .
إرسال البيانات .


كالتالي :


PHP كود :
On Error Resume Next 
Winsock1
.SendData "HAMADA" 


إستقبال البيانات ( GetData ) :

تتم عملية إستقبال البيانات بخطوتين في الأغلب وهي :

اقتباس: تعريف متغير يحمل قيمة نصية .
إسناد البيانات المستقبلة إليه .

وتكون كالتالي :

إقتباس :Dim Data as String
Winsock1.GetData Data

وتوضع شيفرة إستقبال البيانات في حدث الوينسوك DataArrival .
ومن الممكن عمل جملة Select case إذا كانت البيانات القادمة كثيرة .


إضافة الأداة :

تتم إضافة الأداة إلى المشروع كالتالي :

اقتباس: ctrl + T > Microsoft Winsock Control 6.0



الجزء الثاني :


برمجة برنامج بسيط بواسطة الوينسوك

بعد إعتماد شرح الوينسوك السابق ، دعونا ننتقل إلى المستوى الأعلى ، وهو برمجة الإتصال

أولا :ً برمجة الإتصال المباشر ( من العميل إلى الخادم ) :

العميل :

في برنامج العميل نحتاج للأدوات التالية :

أداة الوينسوك .
2 صندوق نص واحد لعنوان الأي بي ، والآخر للمنفذ .
3 ليبل .
تايمر ( Interval = 1 )
2 زر كوماند واحد للإتصال وواحد لقطع الإتصال .

ونسقها لتصبح على شكل برنامج محادثة .



كتابة النص البرمجي :

العميل :

في زر الأمر ( إتصال ) :


PHP كود :
On Error Resume Next 
Winsock1
.Close 
Winsock1
.Connect Text1.TextText2.Text 

حيث إنه تم طلب الإتصال عبر المنفذ 303 بعنوان الآي بي إفتراضي وهو 127.0.0.1 والموجودان في صندوقي النص Text1 , Text2 .

في زر الأمر ( قطع الإتصال ) :
PHP كود :
On Error Resume Next 
Winsock1
.Close 
Winsock1
.listen 
حيث إنه يتم إغلاق الوينسوك وينقطع الإتصال ، و تتم حالة إنصات جديدة .

في التايمر :



PHP كود :
Dim State 
For State 1 To 10 
Select 
Case Winsock1.State 
Case sckClosedLabel1.Caption " لا يوجد إتصال   " 
Case sckClosingLabel1.Caption "قام الخادم بقطع الإتصال " 
Case sckConnectedLabel1.Caption "متصل" 
Case sckConnectingLabel1.Caption " يتصل بالخادم " 
Case sckConnectionPendingLabel1.Caption "الإتصال معلق" 
Case sckErrorLabel1.Caption "خطأ في الإتصال " 
Case sckHostResolvedLabel1.Caption " تمت معالجة البيانات " 
Case sckListeningLabel1.Caption "منصت " 
Case sckOpenLabel1.Caption "الإتصال مفتوح" 
Case sckResolvingHostLabel1.Caption "تتم الآن معالجة البيانات " 
End Select 
Next State 


تم الإنتهاء من العميل .



الخادم :

في برنامج الخادم نحتاج لأداة الوينسوك فقط .

النص البرمجي :

في كود تحميل الفورم :


PHP كود :
Winsock1.Close 
Winsock1
.LocalPort 303 
Winsock1
.Listen 



حيث إنه يتم إغلاق كل الإتصالات ، وتم تحديد المنفذ 303 ليكون منفذ الإنصات .

في الحدث Connection_Request للوينسوك :


PHP كود :
On Error Resume Next 
Winsock1
.Close 
Winsock1
.Accept requestID 

حيث إنه يتم إغلاق جميع الإتصالات ، ويتم قبول طلب الإتصال Accept .
تم الإنتهاء من الخادم . وتستطيع تجربة البرنامج وفحص الإتصال .


يتبع ......
متغيب
الرد }}}
تم الشكر بواسطة:
#2
الدرس الثاني

ثانيا:ً برمجة الإتصال العكسي ( من الخادم إلى العميل ) :

الإتصال العكسي هو جعل الخادم يتصل بالعميل .
العميل :

في برنامج العميل نحتاج للأدوات التالية :

أداة الوينسوك .
صندوق نص واحد ( للمنفذ ) .
تايمر ( Interval = 1 ) .
ليبل .


النص البرمجي :

في كود تحميل الفورم :


PHP كود :
Winsock1.Close 
Winsock1
.LocalPort Text1.Text  
Winsock1
.Listen 


• إجعل المنفذ ( 303 ) .


حيث إنه يتم إغلاق جميع الإتصالات ، ويتم تحديد منفذ الإتصال والإنصات ، وبعدها يتم أمر الإنصات عبر المنفذ المحدد .




في الحدث Connection_Request للوينسوك :

PHP كود :
On Error Resume Next 
Winsock1
.Close 
Winsock1
.Accept requestID 


تم الإنتهاء من برنامج العميل

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

الخادم :

في الخادم نحتاج للأدوات التالية :

أداة الوينسوك .
تايمر ( Interval = 3000 ) .
2 صندوق نص الأول لعنوان الأي بي والآخر للمنفذ .

يكون عنوان الأي بي إفتراضيا أيضا وهو 127.0.0.1 والمنفذ 303 كما تم تحديده في العميل .


النص البرمجي :

في المؤقت Timer : قمنا بجعل الخاصية ( Interval = 3000 ) لكي يقوم بتجربة الإتصال كل 3 ثواني .


PHP كود :
If Text1.Text "" Or Text2.Text "" Then Exit Sub 
If Winsock1.State sckConnected Then Exit Sub 
Winsock1
.Close 
Winsock1
.Connect Text1.TextText2.Text 




يقوم التايمر بفحص القيم والحالات في صندوقي النص Text1 , Text2 وفي الوينسوك حسب الحالات التالية :

إقتباس : إذا كان كلاهما فارغاً أو أحدهما فارغ ، فإنه لا يقوم بأي مهمة .
إذا كانت الوينسوك في حالة إتصال فإنه لا يقوم بأي مهمة .

وإن كانت الشروط مخالفة لجمل الشرط ، فيقوم التايمر بإغلاق الوينسوك ( إغلاق الإتصالات الحالية ) ، وإجراء إتصال جديد .

تم الإنتهاء من الخادم .

تستطيع الآن تجربة البرنامج وفحص الإتصال .


يتبع .....
متغيب
الرد }}}
تم الشكر بواسطة:
#3
الدرس الثالث

الجزء الأول :




برمجة برنامج محادثة .


برامج المحادثة هي البرامج الأكثر شيوعاً بين مبرمجي الإتصالات بواسطة الوينسوك ، لأنها تجربة ممتعة وشيقة ونوعية وتعتبر نقلة نحو الأفضل .

فكرة البرنامج :

إقتباس : الإعتماد على إرسال واستقبال البيانات .
عرض البيانات بصورة تشبه الماسنجر .

المميزات :

اقتباس: يعمل بتقنية الإتصال العكسي .
قابل للتطوير ليصبح قادرا على إستقبال أكثر من شخصين .

ضروريات لبرنامج المحادثة :

نستطيع في برنامج المحادثة إرسال البيانات بهذه الصورة


PHP كود :
Winsock1.sendData Text1.text 


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


خطوات إرسال البيانات في برنامج المحادثة ( وليست الطريقة الوحيدة ) .

اقتباس: تعريف ( إجراء Sub ) مهمته الإرسال .
كتابة البيانات في صندوق نص .
إرسال البيانات ، وعرضها في صندوق المحادثة + الإسم .

خطوات إستقبال البيانات :

إقتباس : تعريف متغير من يحمل قيمة نصية .
إسناد البيانات القادمة إليه .
إستقبال البيانات وعرضها في صندوق المحادثة + الإسم
.

ملاحظة : *
إقتباس : هذه الخطوات هي شاملة لكلا الطرفين ( العميل والخادم ) .
* تقنية الإتصال هي ( الإتصال العكسي ) .



العميل :

في برنامج العميل نحتاج للأدوات التالية :

أداة الوينسوك .
صندوقي نص الأول لعرض البيانات و تكون خصائصه كالتالي
اقتباس: Multiline = true , Locked = true , Scrollbars = 2- vertical, Name = txtData.

أما بالنسبة لصندوق النص الآخر فتكون خصائصه كالتالي :

إقتباس :Name = txtSend

و

ليبل .
تايمر ( Interval = 1 ) .
زر أمر للإرسال .

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




النص البرمجي :




في قسم التصريحات العامة :

PHP كود :
Sub SendData (data As String
On Error Resume Next 
Winsock1
.SendData data vbCrLf 
TxtData 
txtData "Client> " data vbCrLf 
End Sub 


حيث إنه عبارة عن إجراء يقوم بجعل الوينسوك ترسل البيانات عند إستدعاءه .

في زر الأمر ( إرسال ) :

PHP كود :
If txtSend.Text <> "" Then 
SendData txtSend
.Text 
TxtSend
.text "" 
End If 


حيث إنه يقوم بإستدعاء الإجراء SendData ويقوم بإرسال البيانات الموجوة في TxtSend .

في الحدث Change الخاص بصندوق النص TxtData :


PHP كود :
txtData.SelStart Len(txtData.Text



في الحدث DataArrival للوينسوك :


PHP كود :
Dim ChatData as String 
Winsock1
.GetData ChatData 
TxtData 
txtData "Server> " ChatData 



تم الإنتهاء من برنامج العميل .

الخادم :

في الخادم نحتاج للأدوات التالية :

أداة الوينسوك .
تايمر ( Interval = 3000 ) . ( نوع الإتصال : عكسي )
4 صندوق نص .
1 زر كوماند .

وتكون لها نفس الخصائص البرمجية في برنامج العميل .


النص البرمجي :

في قسم التصريحات العامة :


PHP كود :
Sub SendData (data As String
On Error Resume Next 
Winsock1
.SendData data vbCrLf 
TxtData 
txtData "Server> " data vbCrLf 
End Sub 


في زر الأمر ( إرسال ) :

PHP كود :
If txtSend.Text <> "" Then 
SendData txtSend
.Text 
TxtSend
.text "" 
End If 


في الحدث Change الخاص بصندوق النص TxtData :


PHP كود :
txtData.SelStart Len (txtData.Text

في الحدث DataArrival للوينسوك :


PHP كود :
Dim ChatData as String 
Winsock1
.GetData ChatData 
TxtData 
txtData "Client> " ChatData 

تم الإنتهاء من برنامج الخادم .

الجزء الثاني :

طريقة أخرى لبرنامج المحادثة :

إذا كان برنامجك عبارة عن برنامج يستخدم وينسوك واحدة على الأقل ، ولديك العديد من البيانات لترسلها من العميل إلى الخادم ، فكيف يمكنك فصل البيانات الواردة في الخادم ، وتنفيذ كل منها على حدة ؟؟؟ سأقوم بجمع فكرتين في آن واحد :

إقتباس : - فصل البيانات .
- طريقة إرسال البيانات التقليدية .

- فصل البيانات :

يتم فصل البيانات بعدة دوال ومنها Mid , Left , Right ، وفي موضوعنا سنستخدم الدالة Left + الدالة Right

لفرض أن العميل أرسل الأمر Sip + محتوى صندوق نص على الشكل التالي :

PHP كود :
Winsock1.sendData "Sip" Text1.text 


فإذا قمنا بإستقبال البيانات على هذا الشكل


PHP كود :
Winsock1.getData Data 
MsgBox Data 


ووضعناها في MsgBox فإنه يتم عرض الأمر Sip في الرسالة ، وهذا ما لا نريده ، لذلك يجب إلغاء الأمر Sip من البيانات .

مثال

PHP كود :
Dim Dat as String 
Winsock1
.GetData Dat 
If Left (Dat3) = "Sip" Then 
Dat 
Right (DatLen (Dat– 3
Text2.Text Dat 
End 
If 



حيث إن :

تم تعريف المتغير Dat لإسناد البيانات القادمة إليه .
في الجملة الشرطية If يتم فحص المتغير Dat فإن كانت سلسلته النصية من جهة اليسار تحتوي على الأمر Sip فإنه يتم أخذ الجزء Right وإقتطاع 3 أحرف من طول السلسلة ،
ووضع الباقي في صندوق نصي .
وهكذا تجري الأمور .

----

برنامج المحادثة :

في كلا البرنامجين نضع نفس الأدوات الموجودة في المثال السابق ، وطبعا يكون الإختلاف في الأكواد فقط . ولكن نقوم بإضافة زر أمر وصندوق نص في برنامج العميل لكي نوضح مثال فصل البيانات .
سيكون المثال عبارة عن برنامج المحادثة + التحكم في شاشة Run ( من قائمة إبدأ ) .
ويكون إسمه ( فتح التطبيق ) .

النص البرمجي : معظم الأكواد هي نفسها في البرنامج السابق ولكن الإختلاف يكون في زر الأمر ( إرسال ) وزر الأمر الجديد ( فتح التطبيق ) .


(قم بإضافة أكواد الإتصال إلى البرنامج ) .


في زر الأمر ( إرسال ) :


PHP كود :
On Error Resume Next 
Winsock1
.SendData "Cht" txtSend.Text vbCrLf 
txtData
.Text txtData.Text " Client :> "txtSend.Text vbCrLf 


في زر الأمر ( فتح ) :


PHP كود :
On Error Resume Next 
Winsock1
.SendData "Dos" Text1.Text 




في الحدث DataArrival الخاص بالوينسوك :



PHP كود :
On error resume next  
Dim Dat 
as String 
Winsock1
.GetData Dat 
If Left (Dat3) = "cht" Then 
Dat 
Right (DatLen (Dat– 3
txtData.Text txtData.Text " Server :> "Dat vbCrLf 
End 
If 





الخادم :

في زر الأمر ( إرسال ) :



PHP كود :
On Error Resume Next 
Winsock1
.SendData "cht" TxtSend.Text vbCrLf 
TxtData
.Text TxtData.Text " Server :> "TxtSend.Text vbCrLf 


في الحدث DataArrival الخاص بالوينسوك :

PHP كود :
On error resume next  
Dim Dat 
as String 
Winsock1
.GetData Dat 
If Left (Dat3) = "cht" Then 
Dat 
Right (DatLen (Dat– 3
txtData.Text txtData.Text " Client :> "Dat vbCrLf 
End 
If 
If 
Left (Dat3) = "Dos" Then 
Dat 
Right (DatLen (Dat– 3
Shell Dat 
End 
If 

تم إنهاء برنامج المحادثة ، تستطيع تجربته مع أصدقائك .
متغيب
الرد }}}
تم الشكر بواسطة:
#4
الدرس الثالث :

مشروع نقل الملفات

من المعروف أن إرسال ملف حجمه 30 بايت أو 90 بايت هي عملية سريعة إذ تكون في نطاق قدرة الوينسوك على الإرسال ، ولكن ماذا نفعل إذا كان حجم الملف 1 ميغا بايت
( 1024 بايت ) ... هنا نصاب بالملل .

الحل هو تقسيم الملف وإرسال كل جزء منه على حدة ، وتجميعها في ملف واحد في جهاز الخادم ، هذا بإختصار . أما العمليات التي تتم أثناء الإرسال فهي كالتالي :

فتح الملف بصيغة ثنائية Binary :

تتم عملية فتح الملف بهذه الصيغة بثلاث خطوات وهي :

إقتباس : تعريف متغير جديد.
إعطائه القيمة FreeFile .
فتح الملف على هيئة المتغير بصيغة Binary .

وتكون كالتالي :


إقتباس :Dim F
F = FreeFile
Open "File" for Binary as F


حيث إن ( File ) هو إمتداد الملف .


قراءة جزء معين من الملف :

تتم عملية فتح الملف بهذه الصيغة بثلاث خطوات وهي :

إقتباس : تعريف متغير جديد.
قراءة جزء معين منه Space .
حفظ البيانات بداخله Get .



PHP كود :
Dim C 
Space (2048
Get # F,, C 






حساب عدد ال Bytes :

تتم عملية فتح الملف بهذه الصيغة بخطوتين :

اقتباس: تعريف متغير جديد.
حساب الحجم Lof .



PHP كود :
Dim A 
Lof (F


الكتابة على الملف Put :


PHP كود :
Put #F, , Data 


خطوات إرسال ملف :

إقتباس : • برمجة إجراء ( Sub ) يحتوي على خوارزميات التقسيم والإرسال .
• إرسال الملف من العميل .
• إستقبال أجزاء الملف في الخادم .
• كتابة المعلومات على الملف
.

هذا بإختصار ،،،،،، تابع الشرح لتعرف أكثر :

سأقوم بشرح إرسال ملف صغير الحجم ، ( في الغالب 10 كيلو بايت ، إن كان أكثر فلا يعمل الملف بعد الإرسال وذلك لأن الكود البرمجي ضعيف جداً في الإرسال ، ) وأنتظر منكم تطوير أنفسكم للأحسن .

العميل :

الأدوات :

- الوينسوك
- تايمر عدد 2 (الأول لتبيين حالة الوينسوك ، والثاني للإرسال Interval = 3000 )
- 3 صندوق نص ( الأول للمنفذ ، والبقية لإمتداد وإسم الملف ) .
- أداة CommonDialog .
- 2 زر كوماند ( الأول لفتح الملف ، والآخر للإرسال ) .

نضبط الخاصية Index للوينسوك ونجعلها = 0 ( وذلك لإنشاء مصفوفة وينسوك )
والخاصية Enabled للتايمر ونجعلها = False .



النص البرمجي :

في قسم التصريحات العامة ، نعرف الإجراء SendFile .


PHP كود :
Sub SendFile (Index as Integer
Dim wsdt as String 
FreeFile 
Open Text2
.Text for Binary as 
Wsdt 
Space (LOF (f)) 
Get f,, wsdt 
Close f 
Winsock1 
(Index).SendData "Rec" wsdt 
End Sub 


في زر الأمر ( فتح الملف )

PHP كود :
On Error Resume Next 
CommonDialog1
.ShowOpen 
Text2
.Text CommonDialog1.FileName 
Text3
.Text CommonDialog1.FileTitle 



ملاحظة ( عند كتابة أكواد الإتصال في برنامج العميل _ يجب كتابة المقطع Index بداخل أقواس ( index ) بعد كلمة Winsock لأنه تم إنشاء مصفوفة )
مثال :

PHP كود :
Winsock1 (index).listen 


في التايمر ( 2 )


PHP كود :
On Error Resume Next 
SendFile 
(Index
Timer2.Enabled False 



في زر الأمر ( إرسال ) :


PHP كود :
On Error Resume Next 
Winsock1 
(Index).SendData "SSS" Text3.Text 
Timer2
.Enabled True 


يقوم هذا المقطع بإرسال إسم الملف FileTitle الموجود في Text3 . ويقوم بتغيير الخاصية Enabled للتايمر لكي يقوم ب إرسال الملف بعد 3 ثواني .



الخادم :

الأدوات :

- أداة الوينسوك .
- تايمر .
- 3 صناديق نص ( الأول لعنوان الأي بي ، والثاني للمنفذ و الثالث لإستلام إسم الملف).



النص البرمجي :

في قسم التصريحات العامة :


PHP كود :
Dim F as Integer 


في حدث الوينسوك Data Arrival :


PHP كود :
Dim Dat as String 
Winsock1
.GetData Dat 
If Left (Dat3) = "SSS" Then 
Dat 
Right (DatLen (Dat– 3
Text3.Text Dat 
End 
If 
FreeFile 
Open App
.Path "\" & Text3.Text for Binary as F 
'''''' 
If Left (Dat, 3) = "
Rec" Then 
Dat = Right (Dat, Len (Dat) – 3) 
Put F,, Dat 
Close F 
MsgBox "
Transfer Completed
Exit Sub 
End If 


وبالنسبة للتقسيم ( راجع الدرس السابق ) .

تم بحمد الله .
متغيب
الرد }}}
تم الشكر بواسطة:
#5
مشكور يا استاذ احمد
(( يَا أَيَّتُهَا النَّفْسُ الْمُطْمَئِنَّةُ ارْجِعِي إِلَى رَبِّكِ رَاضِيَةً مَرْضِيَّةً فَادْخُلِي فِي عِبَادِي وَادْخُلِي جَنَّتِي ))

الرد }}}
تم الشكر بواسطة:
#6
abulayth كتب :مشكور يا استاذ احمد

تسلم أخي أبو ليث ،

مشكوووور عالمرور الطيب
متغيب
الرد }}}
تم الشكر بواسطة:
#7
ياريت ترفق مثال سيدي الفاضل للتطبيق علي هذه الدروس ولك جزيل الشكر
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  سلسلة دروس الحماية ( للمبتدئين , المتوسطين , المتقدمين ) + تطبيقات جاهزة للاستخدام Ahmad Jawad 6 7,497 02-06-16, 11:45 AM
آخر رد: CLARO

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم