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

مناقشه واسئله حول الأداه العقيمه winsock

مغلق
بدأه A.B.D في 19 ديسمبر 2006 · 16 رد · 1,848 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

طبعا كلنا او معظمنا سمعنا عن الأداه ديه وعرفها كويس

انا بقي بدات استعمل الاداه ديه في مشروع كده

المشروع عباره عن لعبه كنت فاكرها صغيره لكن ومع الأستمرار فيها ولما بقت في مرحلة النهايه

اكتشفت ان اللعبه كبيره وتحتوي علي حالات كثيره مما يؤدي الي كثره الأرسال بين السيرفر والعملاء

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

حيث لما اتنين من اليوزرز يبعتو حاجه للسيرفر السيرفر ينفذ حاجه وحاجه لأ

ولما السيرفر يبعت لليوزر حاجتين ورا بعض نفس الموضوع يحصل وهو يتم تجاهل واحد فيهم

فكرت في حلول كتير تنظم عملية ارسال واستقبال البيانات ولكن مفيش فايده

وبعد شغل حوالي 4 شهور في اللعبه اكتشفت انها هتفشل بسبب هذه الأداه العقيمه

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

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

وهل الأداه ديه تنفع في اللعب الاونلين الكبيره ولا مش بتكون جامده

وايه الحل البديل اللي الناس بتستخدمه في اللعب ويكون حل مضمون

وفي النهايه اسف علي الأطاله واتمني الاقي حد يرد عليه

#2

السلام عليكم

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

#3
اقتباس
المشروع عباره عن لعبه كنت فاكرها صغيره لكن ومع الأستمرار فيها ولما بقت في مرحلة النهايه

اكتشفت ان اللعبه كبيره وتحتوي علي حالات كثيره مما يؤدي الي كثره الأرسال بين السيرفر والعملاء

الرد الوحيد علي هذا الكلام هو أين التحليل؟

Oracle 10G Certified Professional Developer.

عودة بعد 3 سنوات غياب، ان شاء الله سوف اتكلم معكم قريبا احبائي

#4
amr_altweky كتب:
السلام عليكم

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

شكرا علي ردك والمشكله بتاعتك ليها حل ان شاء الله في كتاب للاستاذ رغيد الطيب هتلاقي فيه حل لمشكلتك

ومستنين ردك وتقولنا حليت المشكله ازاي ان شاء الله

romantic_boy كتب:
الرد الوحيد علي هذا الكلام هو أين التحليل؟

اعتقد ان ردك مالوش اي علاقه بالموضوع يعني ولا هيقدم ولا هيأخر وبالتالي .................

#5

انا كنت قريت مرة عن حل للمشكلة ديه , بتخلى فى السيرفر اكتر من اداة وينسوك , وبتتنقل بينهم لو فى واحدة منهم مشغولة , مش فاكر بالظبط ..

تقريبا فى الكتاب ده , معلش اصل الجهاز اللى انا عليه مفيهوش الاكروبات بس جربه كده :

كتاب الوينسوك

تم تعديل هذه المشاركة بواسطة FemTo في 19 ديسمبر 2006 في 19:35

مدونة مهندس ميكانيكى

“Any fool can make things bigger, more complex, and more violent”

#7

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

اخواني الاعزاء بعد التحية بالنسبة للاخ صاحب الموضوع فا هو ما اخترش الطريق الصحيح عشان يشتغل في البرمجة بمعني انك بتبرمج لعبة يعني من البديهي كده انك ما تستخدمش الوين سوك في الالعاب الوين سوك اخي بيستخدم في ارسال بيانات نصية او بينري فيل عن طريق Tcp وهو ده نظام معروف بس برمجة الالعاب والشبكات والكلام ده فا ده محتاج ان حضرتك تدرس الدايركت اكس Direct x او opengl وانا افضل ليك طبعا opengl لانها اسهل واسرع وليها اماكنيات عالة ومتوافقة مع اي نطام تشغيل فا يا ريت ان حضرتك تبحث عن كتب ليها امال بالنسسبة للاداة winsock فا مشكور الاخ Femto علي الكتاب وفعلا الكتاب ده قيم جدا يا جماعة وفعلا هتلاقي فيه امثلة ازاي تعمل مصفوفة للوين سوك واستخدام اكتر من مرة لو كانت مشغولة فا يا ريت انك تراجع عليه بس بصبر وتركيز وشكرا ليكم جميعا ....................................

#8

شكرا يا جماعه علي مرورك وردودكم الجميله

والكتاب ان شاء الله هقرأه كويس شكرا اوي Femto

وبالنسبه للاخ عبد العزيز انا ببعت متغيرات نصيه كلها من نوع string عن طريق senddata واستقبل عن طريق getdata وطول البيانات مش مضمون لأن اللعبه فيها chat وعلي فكره انا خلصتها بس اكتشفت المشكله ديه متأخر

وشكرا ماكس علي ناصيحك بس انا مش محتاج ال opengl or dx في حاجه في اللعبه

وان شاء الله هقرا الكتاب كويس

وياريت نكمل كلام عن الموضوع اللي عنده اي حاجه تاني يقولها

بحاول انزل الكتاب لكن الرابط لا يعمل

وما زالت التجربه مستمره حتي يتم الرفع علي سيرفر تاني او يشتغل اللينك ده

تم تعديل هذه المشاركة بواسطة A.B.D في 19 ديسمبر 2006 في 23:49

#9

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

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

ونسمي الاداه ws

ده في السرفر بس

وتكت في الحدث

load_form()

ws(0).localport=2944

ws(0).listen

end sub

وتكتب في الحدث

ws_erqe....

for i=0 to 10

if ws(i).state<>7 then

ws(i).erqe.... =true

end if

next i

end sub

الحدث erqe.... هو حدث موجود في اده winsok بس انا مش فاكره بالضبط

شرح الكود

هو عندما تكون اداه هى winsok تكوف في حاله اتصال وفي نفس الوقت تقوم بتنفيذ امر معين

وفي نفس الوقت تكون ياتي امر جديد

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

#10

كلام جميل بس ياريت تفتكرلنا ايه هو الحدث erqe بعد اذنك

وشكرا علي تعبك وردك في الموضوع

#11

ياريت حد يرفع الكتاب اللي في المشاركه رقم 5 تاني عشان الرابط مش شغال معايا كويس

والف شكر ليكم جميعا واتمني نكمل مناقشه

#12

بسم الله السميع العليم

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

فمثلا قد اقوم بإرسال رسالتين متتاليتين الى جهاز بعيد مثلا الرسالة الاولى "I am Ragheed" و الرسالة التالية هي "what is your name" و نتيجة الى اي تأخير حاصل في ارسال البيانات و انشغال احد الكبيوترين بمعالجة امر ما فقد يتم تأخير الرسالة الاولى ثم ارسالها في وقت لاحق ( قد يكون اقل من ثانية او اثنيتين ) و النتيجة بأن يتم ارسال الرسالتين سويا بدلا من ان ترسل كل و احدة على حدا ... و يعني ذلك ان تصل رسالة واحدة هي "I am Ragheedwhat is your name " وهذا يسبب في كيرا من الاحيان تداخل الرسال و بالتالي عدم فهمها بشكل جيد في الطرف الآخر ... و لهذا فينبغي على المبرمج اختيار الطريقة السليمة لتجاوز المسألة

و اول الطرق و ابسطها هي استخدام الامر DoEvents بعد كل عملية ارسال SendData وهذا سيحل الكثير من المشاكل ( و ليس كلها ) و ستبقى حالات يتم فيها الارسال ضربة واحدة و تتداخل فيها الرسائل.

الطريقة الثانية هي استخدام الفواصل فمثلا يتم اختيار رمز معين كفاصل بين الرسائل مثلا (#) وبهذا ستكون الراسالة الاولى "I am Ragheed#" و الرسالة الثانية "what is your name#" و بالتالي اذا حدث اي اختناق تصبح كالتالي :

"I am Ragheed#what is your name#" و الان يمكن بسهولة ان تفصل الرسائل في الطرف الثاني ثم تعامل الرسائل كلا على حدا.

و اخيرا اختيار البروتكول المناسب حيث ان الغالبية العظمى من مستخدم الوينسوك يستخدمون برتكول الـ TCP وهو برتكول معتمد و اكثر موثوقية غير انه في نفس الوقت ابطأ نسبيا من الربتكول الاخر المدعوم في الوينسوك وهو الـ UDP الذي يعتبر اقل موثوقية و لكنه اكبر سرعة

و بما ان حجم التراسل بين الخادم و العميل في برنامج كبيرجدا من ناحية السرعة و الكمية فيمكنك تجربة برتكول الـ UDP .... فمثلا تخيل انني اريد ان اقوم ببناء برنامج يقوم بالتحكم بالماوس في جهاز بعيد .. سيكون عليا القيام بالتالي

1 - تسجيل كل حركة اقوم بها بالماوس على جهازي و تسجيل موقع الماوس فيه.

2 - ارسال الموقع الذي سجلته في الخطوة السابقة الى الجهاز الاخر.

3 - تحريك الماوس في الجهاز الاخر الى ذلك الموضع.

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

اذا جربت استخدام برتكول الـ TCP وهو البرتكول الافتراضي في الوينسوك فإن الحركة ستكون رديئة كما ان احتمال تداخل البيانات سيكون كبيرا جدا نظرا للغرسال السريع و المتكرر ... و لكن اذا استخدم برتكول الـ UDP مع مراعاة استخدام فواصل الرسائل كما تم الحديث سابقا فإن النتائج ستكون مرضية جدا .... وقد جرت ذلك عمليا.

اعانك الله تعالى في إتمام لعبتك الجميلة اخي الكريم

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

مواضيع برمجية تقنية جديدة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال خدمة الـ RSS في برامجنا ومواقعنا ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج للبحث في الملفات ومحتواياتها (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• فئة للتراسل بين برنامجين في جهاز واحد ! (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

مواضيع برمجية تقنية قديمة

----------------------------------------------------------------------------------------------------------------------------------------------

• إستغلال رسائل البالونات Balloons في الوينذوز أكس بي(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• مقالة : لماذا يجب ان نعتني بشفرات برامجنا !؟- (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• لمطوري البرامج و مواقع الويب - برنامج تركيب ألوان - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : بسيط للتحكم بالنظام, عن طريق الريجستري - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• برنامج : لتقييد و منع تشغيل البرامج الاخرى - (VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• النوافذ المنبثقة و طريقة لإستغلالها في برامجنا -(VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• تقنية الإستدعاء الذاتي - (VB.NET , VB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• مصفوفات الأدوات Control Arrays افكار وتلميحات ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

• أفكار و تلميحات[ المعنى الحقيقي للـ True و False ] - أمثلة (VB.NETVB6.0)

----------------------------------------------------------------------------------------------------------------------------------------------

• دوال الـ APIs و مايقابلها في الدوت نت ! - (VB.NET)

----------------------------------------------------------------------------------------------------------------------------------------------

#13

بسم الله الرحمن الرحيم

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

أنا سعيد جداً بوجود هذه المشاركات الطيبة وتبادل الخبرات المتميزة

أنا قليل الخبرة والمعلومات بهذه الأداة لأنني نادراً عندما أقوم باستخدامها وتجربتها على شبكة

ولكنني قرأت وحاولت في الموضوع

بالنسبة للإتصال بأكثر من جهاز في نفس الوقت

ألا تعتقدون أن الطريقة التي تستخدم حالياً فاشلة

ألا وهي لكل جهاز يتم استخدام Port مختلف عن الآخر

ماذا يحدث لو كنت تقوم بعمل برنامج على الشبكة لشركة ثم واكتشفت أن هذه الشركة لديها برامج عديدة تعمل على الشركة إذاً فكل منها يجب أن يأخذ Port معين

وبهذا ستقوم بالتعديل في برنامجك الفاشل الغير منظم لجعله لايتعامل مع هذا الـPort ثم تقوم بتغيير هذا في جميع الأجهزة ولتكن 100 جهاز مثلاً

فكروا في الموضوع قليلاً قبل أن أقول لكم ماتوصلت إليه ( مع العلم أنني مبتدء في هذه الأداة )

( مع العلم أنني مبتدء في هذه الأداة )

( مع العلم أنني مبتدء في هذه الأداة )

( مع العلم أنني مبتدء في هذه الأداة )

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

تم تعديل هذه المشاركة بواسطة ياسر جمال في 20 ديسمبر 2006 في 07:25

ادعو لي بالهداية فأنا أحتاج هذا الدعاء بشدة

منتدى تصميم التطبيقات (و يشمل نظم التشغيل) و تعريبها. <<<<<<

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

بعض ردودي ومشاراكاتي في المنتدى:

1- هل تريد التحكم بجهازك كأنك محترف, ( إذاً تعال معي وتعلم الرجستري Registry ).

...|-->> فكرة عامة عن الرجستري وكيفية التعامل معه ( رقم المشاركة 1 - 4 )

...|-->> كتابة ملف رجستري

...|-->> تشغيل الرجستري دون رسائل( في الخفاء )

...|-->> بعض التحكمات التي يقدمها الرجستري

...|-->>=>> إيقاف عمل Ctrl+Alt+delete ( Task Manager )

...|-->>=>> إخفاء قائمة ملف file وبذلك لن ترى قائمة file

...|........... في مشاركة أخرى >> حتى ولو قمت بالضغط على أي ملف أو مجلد بزر الفأرة الأيمن

...|-->>=>> لإيقاف وإخفاء عمل البحث Find من على الجهاز

...|-->> بعض المعلومات التي يقدمها الرجستري

...|-->>=>> معرفة الأجهزة المتصلة بالـIDE ورقم السريال الخاص لكل جهاز

...|-->> من أحسن مواقع الرجستري

...|-->>=>> http://technet2.microsoft.com/WindowsServe...3.mspx?mfr=true

منتدى مبرمجي لغة Microsoft Visual Basic <<<<<<

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

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

1- لعبة (من صنعي ), جربها وقول رأيك

2- ساعة حائط, من صنعي

بعض ردودي ومشاراكاتي في المنتدى:

1- طريقتان لفتح ملف معين وليكن بامتداد SWF ببرنامجك [ الطريقة الأولى - الطرقة الثانية ]

2- هل تريد ألا يتحكم أحد في الجهاز غيرك؟

3- كود ايقاف عمل زر الاغلاق x بزاوية الفورم

4- عرض صورة متحركة بالكود , أي بدون استخدام أدوات

5- اجعل الـComboBox [ تنسدل - لما تكتب فيا تنسدل وتظهر الاسماء التى تبدأ بالحرف اللي كتبته فى الكومبو ]

6- إنشاء مكون أثناء تشغيل البرنامج ثم إدخاله تحت نطاق مكون آخر مثلاً إدخاله داخل نطاق microsoft tabbed dialog control

أسئلتي في المنتدى التي تم الإجابة عليها:

1- كيف يمكن قراءة الإشارات الصوتية الخارجة من الميكروفون أو السماعات ( لرسمها أو العبث بها ) ؟ أرجو المزيد من الردود ...

2- إيقاف عمل الرجستري

أسئلتي في المنتدى التي لم يتم الإجابة عليها:

اقتباس
ردك يعطي حافذ للإجابة على أسئلتك
#14

يا خبر الاستاذ رغيد الطيب بحاله هنا

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

وان شاء الله هيتحل الموضوع وبالنسبه للدايركت اكس لو الموضوع سهل انا ممكن اتعلمه واغير نظام اللعبه

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

ومكنتش اعرف ان ال Dx بيعمل كده وشكرا ليك استاذ رغيد علي معلوماتك القيمه وعايز اقولك ان انا اصلا اتعلكت الوينسوك من الكتاب بتاعك فبجد شكرا ليك

بالنسبه للباشا ياسر جمال اللي كل ما اعمل موضوع لازم يعبرنر ويرد عليا احب اشكره هو كمان

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

بصراحه مفهمتكش ياريت تقولنا طريقتك افادكم الله

وشكرا الي كل من رد علي الموضوع

وما زالت المناقشه مستمره

تم تعديل هذه المشاركة بواسطة A.B.D في 20 ديسمبر 2006 في 13:21

#15

اشكر الاستاذ رغيد الطيب

لأني بالفعل اعاني كما يعاني الاخ A.B.D ... حيث كنت اعمل على برنامج للمحادثة الجماعية وكان يعمل بشكل جيد عندما كان السيرفر على جهازي والكلاينت على بقية الاعضاء وعندما فقمت بوضع السيرفر على سيرفر الادارة ويندز 2003 وبدئت المحادثة لا تصل الرسائل لطرف الآخر ..... واحيانا تصل الرسائل ولكني لا استطيع استقبال الرد من الطرف الآخر .... وهكذا بدأت الامور تتزاحم عندي وبعد عدة قرءات قمت بوضع الخطوات التي ذكرها الاخ رغيد الطيب بوضع الفواصل DoEvents ولكن المشكلة لا زالت قائمة بعدما تبادل الرسائل من كلا الطرفين ولكن عندما اقوم بوضع السيرفر على جهازي بنظام الاكس بي .. تعمل الامور جيدة

#16

انا حاولت اغير نظام الاتصال الي udp

لكن منفعش بيديني ايرور هل لازم اغير حاجه في الأتصال لو الموضوع كده

وبالنسبه لموضوع الفواصل انا عملته في حاجات لكن في حاجات مينفعش خالص

نظرا لأن في بيانات كتيره جدا بتتبعت

وشكرا ليكم جميعا واتمني نلاقي حل

#17

اضافة للموضوع هذا الرابط

تم تعديل هذه المشاركة بواسطة HnHn في 21 ديسمبر 2006 في 16:11

سجل ايميلك هنا

googlejb5.gif ليصلك كل ما هو مفيد في عالم البرمجة

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

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