byn
  connexion_avc server(delphi)
 

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

المهم أتيتكم اليوم بدرس جديد و مفيد لنا كلنا كونه يتحدث عن فنيات الإتصال بين جهازين

و طبعا اللغة المستعملة لذلك لغة   delphi

الإصدارة 2010 مع العلم أنه يمكن استعمال ما جاء في هذا الدرس مع نسخ أقدم

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

مثل تلك البرامج التي يمكنك أن تصممها هي برنامج شات أو نقل بيانات نصية كانت أو غير ذلك

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

 


 


 


للإتصال بين جهازين يلزمنا أمرين مهمين الأول

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

 

يعمل برنامج serveur على فتح الإتصال بواسطة الرقم التعريفي الخاص بالإتصال مع socket serveur

للتذكير فقط الرقم التعريفي الخاص بالإتصال هو المعروف لدى الجميع بالـــPort

كما يتصل برنامج العميل client ببرنامج serveur  عن طريق عنوان الإيبيl'adresse IP

و عندما يتصل البرنامجين (مع العلم كل برنامج على جهاز معين)

يبقى الأمر المهم و هو انتقال البيانات  بين الجهازين أو بين برنامج serveur  و برنامج client

 

 

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

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

 

المكون الأول

 

TServerSocket

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

 

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

 

TClientSocket

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

 

 

ملاحظة

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

Composant ثم installer des  paquets ثم

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

 و في المسار

 

C:Program Files (x86)EmbarcaderoRAD Studio7.0bin

 اختر العنصر 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');

 

 

 
انتهي
حمل البرنامجين (السورس الخاص بهما) من الرابط السفلي
 

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

سيتم الخادم بالتصنت و التقاط أي شيء يستقبل من طرف العميل

ة هذا الأخير من خلاله يمكننا كتابة أي شيء و الضغط بزر الارسال ،ليصل إلى الخادم.

 

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

 

أرجوا أ، يكون الدرس مفهوم

للعلم فإنني أخذت تصاميم البسملة و الشعارات من مواضيع بعض الأصحاب في القسم

شكرا

 
  Aujourd'hui sont déjà 102391 visiteurssur ce site  
 

Ce site web a été créé gratuitement avec Ma-page.fr. Tu veux aussi ton propre site web ?
S'inscrire gratuitement