الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

عمل Connect اكثر من مررة باستخدام ClientSocket واحد... كيف؟

مغلق
بدأه DR-A في 6 سبتمبر 2001 · 10 رد · 1,403 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلالالالالام عليكم و رحمة الله و بركاته

كيفكم؟ :)

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

لكـــــــــــــــــــن

السؤال هو كيف اعمل اكثر من Connection باستخدام Class وحده للـClientSocket ... أشكركم مقدما... :)

#2

ياريت توضح اكتر الشي المطلوب اخي العزيز , وبطريقة مفصلة اكتر , يعني شوية شرح للمطلوب وان شا الله انساعدك .

#3

:)

اااسف اذا لم اوضضح.....

طيب شوف

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

فهمت؟؟؟ :)

أشكرك على حرصك :)

#4

اخي العزيز :

اولا ساوضح طريقة عمل clientsocket

لكي تتصل بسيرفر معين نضع

clientsocket.Address :=192.44.56.1 عنوان الجهاز الرئيسي

clientsocket.Port :=9905 المنفد الدي يربط بالجهاز الرئيسي

clientsocket.Active :=true تشغيل

الان اريد منك توضيح مامعنى Index

وان شا الله يصير خير .

#5

اهلااااااااااا اخي محمد

أشكرك لمحاوله مساعدتي

انا كنت اعرف كيف اسوي كونكت باستخدام هذي الاداه (ولو اني كنت استخدم open بدل active لكن اعتقد نفس النتيجة)

بالفيجوال بيسك اظف اداه winsock1 و اظهب الى خصائصها و اجعل القيمة 1 مثلا

ثم اكتب امر الـLoad winsock[1]

و بدل 1 حط الرقم اللي تبي.....

و بعدها ممكن تسوي

winsock[1] connect.............

winsock[2] connect.............

winsock[3] connect.............

ما ادري فهمتني او لأ

طيب شوف

لو اظفظ بالدلفي الآداة ServerSocket1

افرض انه شبك عليها 3 كلاينت , معناها صارة تتعامل مع 3 كونكشنات

لو ابي ارسل يكون الامر تقريبا مثل :

ServerSocket1.socket.connections[0].sendtext('hi');

هذا راح يرسل لأول كونكشن

و لو وضعت 1 بدل 0 اذا راح يرسل لثاني كونكشن

و هكذا

معناها انه تعامل مع اكثر من كونكشن باستخدام اداه واحده

و هذا اللي انا اريد عمله

لكن انه يسوي connect و ليس يقبل اتصال خارجي

اذا فهمت قصدي و عرفت الحل اكون شاكر جدا لك

اما اذا لم تفهم قصدي فالعيب فيني, و انسى عن الموضوع و ان شاء الله ربك يحلها :)

أشكرك على ردودك :)

أخوك

#6

السلام عليكم ...

اخــي العزيز ..يوجد ضعف واضح في الموضوع ..فلقد ..سألت

نفس السؤال .....ولم أجد أجابة واضحة لحد الآن ...والتخاطب

بين ClientSocket ..وال SERVER......:'(:'(

لا أريد أن أضطر من وضع اكثر من ClientSocket ...:mad:

لكي يتم التخاطب ..على كل حال أنتظر ...رد من الاخ العزيز

مشرف المنتدى الشبكات والامن ....(f)(f)

#7

السلام عليكم

FOX_DELPHI ، يمكنك تجربة Winsock Class فقط ، مجرد كلاس ماهو مكون يعني، وحسب الطلب يمكنك إنشاء ClientSocket دينامكيا..

بالنسبة لسؤالك حتي لو توافر هناك مكون ClientSocket يستطيع انشاء اكثر من اتصال سوف يتم إنشاء المكون داخليا ، كل ما يغنيك هو عن وضع أكثر من مكون ولكن سيتم إنشاءها دينامكيا ... لأن كل مكون ينشء Socket واحد وما لم يتم قطع الاتصال سوف يظل هذا Socket مرتبطا بالمنفذ والعنوان ولا يمكنك استخدامه لاتصال آخر ...

يوم غد إن شاء الله أرفق لك Socket Class كنت استخدمه قبل فترة

#9

:cool:

شكرا لك أخ العزيز A`War

الفكرة كمايلي .....

المطلوب أرسال بيانات خاصة ....من أي جهاز مربوط على شبكة محلية

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

معلومات قد أخزنها في الريجستري .....وغير متراكمة لأانها سوف تخزن

بالداتا بيس في الجهاز الرئيسي.....كما مهمة الجهاز الرئيسي

..أعطاء ok.. لأي جهاز ...من الأجهزة المربوطة ..على الشبكة المحلية ....

ويعني ذلك ....مثلاً السماح للجهاز بالدخول على سطح المكتب ..

كما سنسمح للمستخدم في أي جهاز يستخدمه أرسال أسئلة...

أو طلب دعماً فنياً .....من عنده فيرسل السيرفر الخاص بذلك الجهاز

المعلومات التي كتبها ذاك المستخم وتظهر أمام المستخدم للجهاز الرئيسي

....هذه الفكرة ..لتكون في الصورة.....

اخـــــــــــــوك .....

بموافقة

#10

هذه تكملة للرد السابق :D

يمكنك استخدام طريقة مشابهة لهذه مع المكون

عندما تحتاج لاتصال جديد انشئ المكون

var MyClient : TClientSocket;
...
...
MyClient:=TClientSocket.Create;

ثم يمنكنك إنشاء معالج خاص لهذا الاتصال

اولا أعلن عن نوع معالج مثل

type
Shandle=Procedure (socket:tsocket; data : pointer ) ;
var 
 MyShandle : Shandle;

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

ثم بعدها يمكنك إسناد هذا المعالج للمكون

MyClient.datahandle:=MyShandle;

ولا تنس كتابة الكود الخاص بالمعالج لمعالجة البيانات ..

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

بالنسبة لفكرتك ما فهمتها زين :o:o:o واتمني ألا أكون قد تفلسفت :o

sock.zip

#11

شكرا لك..اخي العزيز ..(f)(f)

وأنت أكيد ...أعلم مني بالوضوع ....لذلك لأحب أن أثقل عليك كثراً

بالأسئلة ..ولكني ...سأحاول مجدداً ..وأخبرك ..بكل جديد

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

اكثر.......

مشكور جداً ..اخي A`War(f)(f)

هذا الموضوع مغلق.

مواضيع مشابهة