جهز الموضوع للطباعة
طباعة الصفحة:
1 من 2
إذهب الى منتدى:
-- إختار منتدى من القائمة --
درس تطبيقي :الإتصال بين جهازين و إرسال البيانات بينهما شرح مفصل (عصابة الدالفي)
الصفحة التالية الصفحة الأخيرة عرض جميع المشاركات بالكامل تصغير عرض جميع المشاركات
M Haroun
02:15 - 2011/01/23 معلومات عن العضو Tweet
و الصلاة و السلام على اشرف المرسلين ، محمد عليه الصلاة و السلام
و تحية طيبة لجميع اعضاء و زوار و مشرفي منتديات ستارتايمز
و بالاخص منتدانا الغالي
لغات البرمجة
تحية طيبة يقدمها لكم هارون
كما أقدم لكم أسفي لعدم نشاطي هذه الفترة بسبب بعض الإنشغالات ، لكن أتابع معكم كل جديد
المهم أتيتكم اليوم بدرس جديد و مفيد لنا كلنا كونه يتحدث عن فنيات الإتصال بين جهازين
و طبعا اللغة المستعملة لذلك لغة 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)\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.mediafire.com/?lf7ytivit381sbp
طباعة الصفحة:
1 من 2
إذهب الى منتدى:
-- إختار منتدى من القائمة --
درس تطبيقي :الإتصال بين جهازين و إرسال البيانات بينهما شرح مفصل (عصابة الدالفي)
الصفحة التالية الصفحة الأخيرة عرض جميع المشاركات بالكامل تصغير عرض جميع المشاركات
M Haroun
02:15 - 2011/01/23 معلومات عن العضو Tweet
و الصلاة و السلام على اشرف المرسلين ، محمد عليه الصلاة و السلام
و تحية طيبة لجميع اعضاء و زوار و مشرفي منتديات ستارتايمز
و بالاخص منتدانا الغالي
لغات البرمجة
تحية طيبة يقدمها لكم هارون
كما أقدم لكم أسفي لعدم نشاطي هذه الفترة بسبب بعض الإنشغالات ، لكن أتابع معكم كل جديد
المهم أتيتكم اليوم بدرس جديد و مفيد لنا كلنا كونه يتحدث عن فنيات الإتصال بين جهازين
و طبعا اللغة المستعملة لذلك لغة 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)\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.mediafire.com/?lf7ytivit381sbp
الأحد مايو 05, 2024 7:07 pm من طرف سها مجدى
» غسيل مكيفات سبليت بالرياض
الأربعاء أبريل 17, 2024 5:59 pm من طرف سها مجدى
» شركة تشطيب فلل بالباحة
الثلاثاء أبريل 09, 2024 6:36 pm من طرف سها مجدى
» شركة مقاولات بالمبرز
الأربعاء أبريل 03, 2024 4:53 pm من طرف سها مجدى
» شركة نقل عفش بالرياض الياسمين
الجمعة مارس 22, 2024 7:02 pm من طرف سها مجدى
» مقاول اسفلت بالرياض
الخميس مارس 14, 2024 12:12 am من طرف سها مجدى
» شركة تركيب المصاعد بعسير
الجمعة مارس 08, 2024 8:34 pm من طرف سها مجدى
» مبلطين ممتازين بالرياض
الثلاثاء مارس 05, 2024 10:49 pm من طرف سها مجدى
» شركة مقاولات بخميس مشيط
السبت مارس 02, 2024 11:03 pm من طرف سها مجدى