درس تطبيقي :الإتصال بين جهازي 28167010
 درس تطبيقي :الإتصال بين جهازي 28167010
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.



 
الرئيسيةالرئيسية  أحدث الصورأحدث الصور  التسجيلالتسجيل  دخولدخول  

 

  درس تطبيقي :الإتصال بين جهازي

اذهب الى الأسفل 
2 مشترك
كاتب الموضوعرسالة
WaLiDo 31
المشرف العام
المشرف العام
WaLiDo 31


الأوسمة : 2
ذكر عدد المساهمات : 568
تقييم الأعضاء : 5
تاريخ التسجيل : 30/01/2011
العمر : 29

 درس تطبيقي :الإتصال بين جهازي Empty
مُساهمةموضوع: درس تطبيقي :الإتصال بين جهازي    درس تطبيقي :الإتصال بين جهازي Icon_minitimeالثلاثاء فبراير 01 2011, 16:44

لاستغلال الــsockets في الدالفي

نحتاج لمكونين أساسيين



المكون الأول





TServerSocket

حيث يعتبر ها المكون ،المكون الأساسي الذي يسمح بتحديد المنفذ الذي ستستخدمه بغيت التصنت على التعليمات الخاصة ببرنامج العميل



المكون الثاني





TClientSocket

هذا المكون ، ستحدد من خلاله الخادم الذي سيتم الإتصال به عبر المنفذ المحدد ، و يتم ارسال البيانات من خلاله



ملاحظة

المكونان السابقان ، لا يتواجدان افتراضيا مع التبويبات الخاصة بالمكونات ، بل يتم تثبيتهما من خلال القائمة

Composant ثم installer des paquets ثم

ثم عند الذهاب إلى المكان المخصص انظر الصورة



و في المسار


C:\Program Files (x86)\Embarcadero\RAD Studio\7.0\bin

اختر العنصر dclsockets140.bpl

الآن تصميم برنامج serveur

في برنامجنا هذا سنحتاج إلى

ثلاث من المكون TGroupBox

سنحتاج إلى زرين TButton

و اثنين TEdit

سنحتاج إلى اثنين من TLabel

كما سنحتاج إلى TMemo

و سيكون لدينا بطبيعة الحال العنصر المهم TServerSocket

لتكون الواجهة النهائية بالصورة التالية





الآن سنتأتي إلى الجزء البرمجي



في حدث الضغط للزر الأولSe connecter الخاص بالإتصال ندرج الكود التالي




ServerSocket1.Port:=StrtoInt(Edit1.Text);
ServerSocket1.Open;




الكود السابق قد تم من خلاله فتح الاتصال مع برنامج العميل



و في حدث الضغط للزر الثاني Se déconnecter الخاص بفصل الإتصال ندرج الكود التالي




ServerSocket1.Close;

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



و الآن كي يتم قراءة المعلومات المستقبلة و خاصة بالــedit2 يتم كتابة الكود التالي في الحدث OnClientRead الخاص بالــ TServerSocket




Memo1.Lines.Add('Lecture des informations effecuées');
Edit2.Text:=Socket.ReceiveText;



السطر الأول الخاص بحالة القراءة و الإستقبال

و السطر الثاني أمر الخاص بالاستقبال و الإظهار



الآن برمجة الأحداث المهمة اتبع المراحل خطوة ، خطوة





في الحدث OnAccept الخاص بالــ TServerSocket ،يعني بعد الموافقة على الإتصال

و سنقوم بكتابة الكود التالي :


Memo1.Lines.Add('Connécté à '+Socket.RemoteAddress);





لقد تم في الكود السابق إظهار حالة الإتصال

في الحدث OnClientConnect الخاص بالــ TServerSocket ،يعني عندما يكون العميل قيد الإتصال و يتم قبول اتصال الخادم نقوم بكتابة الكود التالي:




Memo1.Lines.Add('Connexion acceptée par le socket serveur');



كالعادة إظهار الحالة .



في الحدث OnClientDisconnect الخاص بالــ TServerSocket ،يعني عندما يكون الاتصال مع العميل غير متاح او يغلق الاتصال نقوم بكتابة الكود التالي




Memo1.Lines.Add('Déconnécté');





في الحدث OnListen الخاص بالــ TServerSocket ،يحدث هذا قبل البدأ بعملية التصنت (إن صح التعبير) مع الخادم و يتم فيه كتابة الكود التالي :




Memo1.Lines.Add('A l''écoute...');





و الآن عندما يتم فشل عملية الإتصال لأي سبب كان نقوم بكتابة الكود التالي في الحدث OnClientError ليبين نوع الخطأ:




if ErrorEvent=eeGeneral then
Memo1.Lines.Add('Erreur inattendu');
if ErrorEvent=eeSend then
Memo1.Lines.Add('Erreur d''écriture sur la connexion socket');
if ErrorEvent=eeReceive then
Memo1.Lines.Add('Erreur de lecture sur la connexion socket');
if ErrorEvent=eeConnect then
Memo1.Lines.Add('Une demande de connexion déjà acceptée n''a pas pu être achevée');
if ErrorEvent=eeDisconnect then
Memo1.Lines.Add('Erreur de fermeture d''une connexion');
if ErrorEvent=eeAccept then
Memo1.Lines.Add('Erreur d''acceptation d''une demande de connexion cliente');


الآن إنتهينا من تصميم برنامج الخادم و ننتقل في الجزء الثاني
الآن تصميم برنامجclient



سنحتاج إلى ثلاث من TGoupBox

و نحتاج إيضا ثلاث من TButton

و نحتاج أيضا إلى TEdit

و ثلاث من TLabel et

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


و في ما يلي سنبين اهم المهام المنصوصة على جل العنصار المذكورة
"Button1" الزر الخاص بالاتصال connexion
"Button2الزر الخاص بفصل الاتصال déconnexion
"Button3" لارسال النص إلى برنامج الخادم
"Edit1" مربع النص الخاص بالمنفذ port الذي يستخدم للاتصال
"Edit2" مربع النص الخاص بعنوان الإيبي l'adresse IP الخاصة ببرنامج الخادم serveur
"Edit3" مربع النص الذي سندرج به النص الذي سيتم إرساله
"Memo1" تستخدم لإظهار الحالة التي بها البرنامج و سنعرف الحالات في ما يأتي من شرح

بعد الإنتهاء من التصميم سينتج لدينا هذه الواجهة

الآن انتهينا من تصميم الواجهة و نأتي إلى التصميم البرمجي

بنفس سياق برنامج الخادم اتبع الخطوات التالية :



في حدث الضغط NOOP لدى زر الاتصالSe connecter اكتب الكود التالي :



ClientSocket1.Port:=StrToInt(Edit1.Text);
ClientSocket1.Host := Edit2.Text;
ClientSocket1.Open;




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

السطر الثالث لفتح الاتصال




في حدث الضغط NOOP لدى زر قطع الاتصال Se déconnécter اكتب الكود التالي :



ClientSocket1.Close;




لقطع الاتصال ،هذا ما يقدمه الكود السابق



في حدث الضغط NOOP لدى زر transmettre الخاص بالارسال اكتب الكود التالي :





ClientSocket1.Socket.SendText(Edit4.Text);
Memo1.Lines.Add('Informations envoyées au serveur');




و الأن مع تحديد الأحداث الخاصة بالعنصر المهم TClientSocket



في الحدث "OnConnect" و هذا الحدث يحدث مباشرة و تلقائيا بعد فتح الاتصال و فيه أكتب الكود التالي :

Memo1.Lines.Add('Connecté à '+Socket.RemoteHost);



الحدث "OnConnecting" و يأتي عندما يكون الاتصال مفتوح و اكتب فيه الكود التالي:

Memo1.Lines.Add('Serveur a été trouvé');



في الحدث "OnDisconnect" الذي يحدث أو يقع عندما يتم غلق الإتصال بين العميل و الخادم و اكتب فيه الكود التالي:

Memo1.Lines.Add('Déconnecté');






" NOOP" و قدم شرحه سابقا حيث يحدث عندما يكون هنالك خطأ ما و اكتب فيه الكود التالي :




if ErrorEvent=eeGeneral then
Memo1.Lines.Add('Erreur inattendu');
if ErrorEvent=eeSend then
Memo1.Lines.Add('Erreur d''écriture sur la connexion socket');
if ErrorEvent=eeReceive then
Memo1.Lines.Add('Erreur de lecture sur la connexion socket');
if ErrorEvent=eeConnect then
Memo1.Lines.Add('Une demande de connexion déjà acceptée n''a pas pu être achevée');
if ErrorEvent=eeDisconnect then
Memo1.Lines.Add('Erreur de fermeture d''une connexion');
if ErrorEvent=eeAccept then
Memo1.Lines.Add('Erreur d''acceptation d''une demande de connexion cliente');







الرجوع الى أعلى الصفحة اذهب الى الأسفل
http://www.nhd1.com/vb/imgcache/20190.imgcache.gif
المدير العام
المدير العام
المدير العام
المدير العام


ذكر عدد المساهمات : 1237
تقييم الأعضاء : 1
تاريخ التسجيل : 03/01/2011
الموقع : https://startimes17.yoo7.com

 درس تطبيقي :الإتصال بين جهازي Empty
مُساهمةموضوع: رد: درس تطبيقي :الإتصال بين جهازي    درس تطبيقي :الإتصال بين جهازي Icon_minitimeالثلاثاء فبراير 01 2011, 19:37

بارك الله فيك ..................
 درس تطبيقي :الإتصال بين جهازي 14ii6
 درس تطبيقي :الإتصال بين جهازي Tvquran_6
الرجوع الى أعلى الصفحة اذهب الى الأسفل
http://startimes17.ahlamoontada.com
 
درس تطبيقي :الإتصال بين جهازي
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
 :: البرمجة والتطوير لمواقع الانترنت :: لغات البرمجة-
انتقل الى:  
 درس تطبيقي :الإتصال بين جهازي 837707735

ملاحظة: كل مايكتب في هذا المنتدى لا يعبر عن رأي إدارة الموقع أو الأعضاء بل يعبر عن رأي كاتبه فقط

https://i.servimg.com/u/f46/12/36/04/46/anai_c11.gif