ahmedmummy

الادة winsock والربط بين البرامج

30 ردود في هذا الموضوع

الادة winsock والربط بين البرامج

الاداة : Microsoft Winsock 6.0

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

ويمكن ان تكون البرامج متصله بشبكة داخلية او حتى على الشبكه العنكبوتية العالميه "internet"

او حتى داخل نفس الجهاز

اما بالنسبة للشبكة الداخلية فيكفى اسم الجهاز لبدء عملية الربط وبالمثل بالنسبه الى داخل نفس الجهاز

اما بالنسبة الى الانترنت فانت تحتاج الى الاى بى "IP" للجهاز الذى تريد الاتصال به

لحظة ماذا اذا كان اكثر من برنامج يريد الاتصال بنفس الجهاز كيف سيعرف البرنامج المستقبل اى البرامج يطلبه هو

هنا يظهر دور المنفذ "port"

والمنفذ هو خط الاتصال الذى يجب ان ينتظر عليه المسقبل ويرسل عليه المرسل وتوفر الاداة 66535 منفذ

لذلك لن تحدث عملية "اللخبطة"

** خصائص الادة Winsock

Winsock.LocatPort وهو يحدد رقم المنفذ للبرنامج الحالى

Winsock.LocalIP يعطي رقم الاي بي للجهاز

Winsock.RemotePort رقم المنفذ للجهاز الذى نريد الاتصال به

Winsock.RemoteHost رقم الاي بي للجهاز الذى نريد الاتصال به

Winsock. listen تجعل الاداة فى وضع انتظار الاتصال

Winsock. connect كما يبدو من الاسم فهى تبدء الاتصال

Winsock. accept لقبول طلب الاتصال

Winsock. close تغلق الاتصال الحالى

Winsock. state تعطى حالة الاداة هل متصلة ام لا او فى حالة

الانتظار

winsock.senddata تجعل الاداة ترسل المعلومات

winsock.getdata تستقبل وتحفظ اخر المعلومات المرسله

winsock.peekdata تستقبل وتحفظ كل المعلومات المرسله منذ بدء الاتصال

**مثال بسيط على كيفية اسخدام الاداة

فى هذا المثال سوف نصمم برنامجين احدهما مرسل والاخر مستقبل

حيث يقوم المرسل بارسال نوصوص الى المستقبل ويقوم المستقبل بعرضها داخل تكست بوكس

** تصميم المرسل

اولا يجب وضع زرين و تكست بوكس والاداة winsock طبعا

ولنجعل خاصيه caption للزر الاول هى connect ونضع الكود الاتى للحدث click

Winsock1.Close 
"Winsock1.RemoteHost = "127.0.0.1
winsock1.RemotePort = 666
winsock1.Connect

فى البداية قمنا باغلاق اى اتصال اخر

ثم طلبنا الاتصال بالاى بى 127.0.0.1 وهو الاى بى الافتراضى لاى جهاز وهو غير متصل

ثم طلبنا منه الاتصال على المنفذ 666

بالنسبه للزر الاخر فلنجعل له الخاصيه caption هى send ونضع الكود الاتى للحدث click

Winsock1.senddata text1.text

doevents

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

لكن قبل تصميم المستقبل اود ان انوه على احداث الادة winsock

Winsock_ConnectionRequest يبدء الحدث عندما يحاول برنامج اخر الاتصال بهذا البرنامج

Winsock_Connect يبدء الحدث عندما تتم عملية الاتصال

Winsock_Close يبدء الحدث عندما تنتهى عملية الاتصال

Winsock_DataArrival يبدء عندما يستقبل البرنامج بيانات

Winsock_SendComplete يبدء عند انتهاء ارسال البيانات

Winsock_Error يبدء عند حدوث خطأ ما

**تصميم المستقبل

نحتاج فقط الى تكست بوكس و الاداة winsock

فى حدث form_load نضع الكود الاتى

winsock1.localport = 666 
winsock1.listen

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

ثم انتظار الاتصال

فى الحدث ConnectionRequest للاداة winsock ضع الكود الاتى

winsock1.close 
winsock1.accept requestID

وهنا قمنا باغلاق اى اتصال قديم ثم قبلنا الاتصال الجديد

وفى الحدث DataArrival للاداة winsok

Winsock1.getdata news 
Text1.text = text1.text + news

وهنا نقوم باستقبال البيانات ثم وضها داخل المتغير news ولابد ان تكون عرفت news كمتغير حرفى

Dim news as string توضع فى قسم التعريفات

نعود الان للحديث عن الجميلة Winsock

سنقوم اليوم بعمل خطوة بسيطة الى الامام ولكن هذه الخطوة يلزمها تغير في الافكار لذا سنتخلى

فكرة المرسل والمستقبل ولنقول انه "المتصل" و"المنتظر" البعض يحب تسميه العميل والخادم

فى الحقيقة الجميع يسمونهما هكذا ولكنى لا احب هذا فتحملوا تسميتى قليلا

ولكن بعيدا عن هذا الكلام النظرى الممل وبعيدا عن افكارى الشنيعة فاغلبكم يقول

"اخلص عايز تقول ايه" سابدء حتى لا تلعنونى

بالنسبة للمرسل الذى كبر واصبح المتصل او العميل client الذى كان

بزرين وتكست بوكس ووينسوك سيضاف اليهما تكست بوكس فقط

لماذا؟ لعرض الرسائل القادمة من "المنتظر"

بالنسبه للزر connect "اتصل" فسيظل كوده كما هو وكذلك الزر send "ابعث"

اذا ما الجديد ؟ الجديد هو ما سيعرضه التكست بوكس الجديد

لذا سنضيف كود فى حدث "وصول بيانات" DataArrival

وهذا هو الكود

Private Sub winsock_DataArrival(ByVal BytesTotal As Long) 
Dim S As String

wsk.GetData news
text2.Text = S
End Sub

وقد شرحناه فيما قبل فى وقلنا " وهنا نقوم باستقبال البيانات ثم وضها داخل المتغير news ولابد ان تكون عرفت news كمتغير حرفى

Dim news as string توضع فى قسم التعريفات"

وهذا كان هو كل التغير فى برنامج المتصل client وهو تغير بسيط

والان نذهب لنطمئن على ابننا الاخر المستقبل اااااه!! كبر هو الاخر واصبح المنتظر server

والجديد انه الان يستطيع الكلام .......هذا جميل حقاً

كان بونسوك وتكست بوكس سنضيف اليهما تكست اخر وزر ارسال

بالنسبة للاكواد الاضافية فهو كود واحد فى الزر الجديد ولنجع له الخاصية caption هى send

ولنجعل له الكود التالى

Winsock1.senddata text1.text 
doevents

ونحن هنا نقوم بارسال رساله الى المتصل ثم doevents لاعطاء فرصة للبرنامج لارسال البيانات

اما بالنسبة لا كواد تحميل الفورم والحدث طلب اتصال وحدث استقبال بيانات فهى كما هى

وكانت هذه احدى خطواتنا الى الامام ونتبعها بخطوات اخرى ان شاء الله

**خطوة جديده: تفادى الاخطاء والتنسيق العام"...لا لا ليس الخاص بالثانوية ,,"

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

ملاحظة "هذة الخاصية للقرأة فقط"

فنقل مثلا ان كتبنا هذا السطر

a=Winsock. state

فان القيم التى يمكن ان تأخذها a هى من صفر الى تسعة وهذة الارقام تدل على الاتى

a = 0 مغلق

a = 1 مفتوح

a = 2 انتظار الاتصال

a = 3 الاتصال معلق الان

a = 4 الطرف الآخر يعالج البيانات

a = 5 الطرف الآخر انهى المعالجة

a = 6 جاري الاتصال الان

a = 7 متصل

a = 8 قام الطرف الآخر بقطع الاتصال

a = 9 حصل خطأ ما

اما عن برامجنا السابقة فقد تحدث بها بعض الاخطأ فمثلا

*بالنسبة للبرنامج المتصل client

فنحن نفترض انه يقوم بالاتصال ثم الارسال ماذا لو ضغط ارسال اولاً!!!

بالتأكيد سيحدث خطأ ويغلق البرنامج لذا يجب ان نتأكد اولاً ان البرنامج متصل اى winsock.state=7

اذا كل ما علينا نغير كود الزر ارسال connect الى الاتى

If winsock.state=7 then 
Senddata text1
Else
Msgbox("please..connect first")
doevents
End if

وهذا هو الخطأ الذى يمكن ان يحدث فى برنامج المتصل

*بالنسبة للمنتظر server

ماذا لو تم الاتصال فعلاً ثم قطع المتصل client الاتصال لاى سبب ما اذا لن يكون المنتظر فى

حالة انتظار للاتصال ثانياً ولن يستحق اسمه "منتظر" اذا ومهما حاول المتصل الاتصال لن يتم الاتصال

ولن يستحق اسمه هو الاخر بالتبعية لذا اذا خرج المتصل علينا ان نعيد المنتظر الى حالة الانتظار كما كان

ولكن كيف سنعرف ان المتصل قطع الاتصال ...لاتقلقوا سنعرف لأن الحدث close سينشط

اذا وضح ما علينا فعله لتفادى هذا الخطأ ..هو ان نضع هذا الكود فى الحدث winsock1_close

Form1_load

كما ترون سطر واحد حل مشكلتنا فعندما يُغلق الاتصال نستدعى حدث تحميل الفورم ليبدء الانتظار من جديد

ويمكن وضع نفس السطر فى الحدث Winsock_ error

لتفا دى اى خطأ اخر غائب عن اذهاننا

هكذا انتهينا من الجزء الخاص بتفادى الاخطأ فماذا عن التنسيق الذى هو ليس تنسيق الثانوية العامة

انا هنا اعنى مجرد تنسيق شكل البرنامج فمثلاً ببرنامجنا الحالى اذا ارسل المتصل الرساله الاتبة

"اهلا بيك" ثم الرساله "عامل ايه" ستظهر هكذا عند المنتظر "اهلا بيكعاما ايه"

لذا وجب علينا ارسال كل رسالة فى سطر منفصل – الا اذا كنت من هواة حل الالغاز والكلمات المتقطعة

Winsock.senddata text1+vbnewline

ها نحن نعود بالجديد

*نقل الملفات عبر الشبكة

ها قد عدنا لنكمل حديثناعن الوينسوك

حتى اخر شيىء فعلناه كنا فقط نتبادل الرسائل النصية بين البرنامجين ولكن ماذا عن الملفات

هل يمكن ان نتبادلها عبر الشبكة؟ ...سؤال غبى منى فكلكم تستعملون المسنجر فى نقل الملفات

كان يجب ان يكون السؤال هل يمكن ذلك بواسطة Winsock ؟....نعم يمكن!!! لكن كيف ذلك؟

لنبدء الامور بالتدريج سويا فلنقل مثلا اننا نريد ارسال ملف نصى وليكن اسمه "allnews.txt"

اولاً كيف نقرأ الملفات النصيه نفتحه اولا ثم نقرأه سطراً سطرا, ها ارى مصابيح تضيىء فوق

رؤسكم مثل افلام الكرتون تقولون ارسل السطر الذى تقرأة الى البرنامج الاخر ثم جمع السطور

وكون منها الملف ...رائع انتم حقاً رائعون لنشرع فى كتابة الكود اذاً

بالنسة للبرنامج الذى سيقوم بارسال الملف فيحتاج زرين الاول اتصال والثانى ارسال

ضع فى زر الارسال هذا الكود كالعادة

Winsock1.Close 
Winsock1.Connect "127.0.0.1", 666

بالطبع تفهمونه ام بالنسبة لزر الارسال فهو كالاتى

Open "allnews.txt" For Input As #1 
Do While Not EOF(1)
Line Input #1, news
Winsock1.SendData news
DoEvents
Loop
Close

نقوم هنا بفتح الملف "allnews.txt" للقرأة ثم نرسله سطرا سطرا ثم نغلق الملف

لاتنسى ان تصنع الملف allnews وتضعه فى نفس مسار البرنامج

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

وكالعادة انتظار الاتصال فى حدث تحميل الفورم

Winsock1.LocalPort = 666 
Winsock1.Listen

ثم قبول الاتصال

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long) 
Winsock1.Close
Winsock1.Accept requestID
End Sub

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

Open "allnews.txt" For Append As #1 
Winsock1.GetData news
Print #1, news
Close

نعم ارسلنا ملفات نصية ولكن ماذا عن باقى انواع الملفات ..لاتقلقوا فانها نفس الفكرة

ان الملفات تتكون ايضا من السطور ولكن سطورها من هذة الاشكال "1001010110001000"

وهو ما يسمى بالنظم الثنائى ولكن لاتهمنا هذة التعقيدات نحن سنفعل نفس الشيىء نقرأ جزء ثم نرسله

وفى الاستقبال نكون هذا الملف

كود برنامج المرسل

Dim news as string 

Private Sub Command1_Click()
Winsock1.Close
Winsock1.Connect "127.0.0.1", 666

End Sub

Private Sub Command2_Click()
Open "allnews.txt" For Binary As #1
news = Space$(5)
Do While Not EOF(1)
Get #1, , news
Winsock1.SendData news
Loop
Close
End Sub

بعد الاتصال قمنا بفتح الملف allnews.txt وحجزنا متغير news وجزنا له خمس بايتات فارغة

ثم نقرأ خمس بايتات من الملف ثم نرسلها وهكذا حتى نهاية الملف

كود المستقبل

Dim news As String 

Private Sub Form_Load()
Winsock1.LocalPort = 666
Winsock1.Listen

End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Winsock1.Close
Winsock1.Accept requestID

End Sub


Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)


Open "allnews.txt" For Binary As #1
Winsock1.GetData news
Put #1, , news

End Sub

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

ولكن هناك خطأ ما فاذا اردنا ارسال ملف حجمة 103 بايت فأن الملف المرسل سيكون 105 بايت

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

الثلاثة +بايتان فارغان وهذة مشكلة بسيطة يمكن حلها عن طريق ارسال حجم الملف فى بداية

الارسال ونسأل اذا كان حجم الملف الاصلى مطروحاً منه الجزء المتكون من حتى الان اكبر من

خمسة ام لا فأن كان لا نضيف الجزء المتبقى فقط .... ويمكن ايضا ارسال اسم الملف فى البداية

على العموم لا تشغلوا بالكم بالاخطأ الان فهذة ابسط طريقة لارسال الملفات ويلزمها كثيرا من التنقيح

تم تعديل بواسطه احمد غريب
0

شارك هذا الرد


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

السلام عليكم

جُزيت خيرا

ابراهيم الطيب

الخرطوم

0

شارك هذا الرد


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

بارك الله فيك اخي الكريم ،

وها أنا أعود من جديد . :)

0

شارك هذا الرد


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

السلام عليكم

مرحا مرحا اخينا و حبيبنا و عزيزنا و معلمنا و قدوتنا و مشرفنا

في هذا المنتدي اخ محمد "prof"

و كل سنة و انت طيب وحمداً لله علي السلامة

ابراهيم الطيب

الخرطوم

0

شارك هذا الرد


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

لا ادرى هل انا من يجب ان يقول مرحبا وانا العضو الجديد !

على العموم عودا حداً

0

شارك هذا الرد


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

السلام عليكم

اعذرنى اخى احمد على التعديل فى موضوعك ولكن الموضوع شيق ومفيد وانا لم استطع ان اتمالك نفسى لذالك اظطررت إلى ترتيب الكود بحيث يظهر بطريقه تسهل للقارئ فهمه .

جزيت خيراً اخى احمد واهلاً وسهلاً بك فى المنتدى اخ عزيز وغالى.

وحيا الله اخونا الحبيب prof المنتدى كان مظلم فى فترت غيابك.

والسلام

تم تعديل بواسطه احمد غريب
0

شارك هذا الرد


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

السلام عليكم

شكرا جزيلا اخي ابراهيم علي هذا الاستقبال الرهيب . وبارك الله فيك

عفوا اخي ahmedmummy انا من يجب ان يقول لك اهلا بك ،، فاهلا ومرحبا بك بيننا وتسلم علي هذا الموضوع القيم . بارك الله فيك

اخي احمد غريب تسلم علي كلامك الجميل وبارك الله فيك والمنتدي دائما منور بوجودك الدائم . اتمني لك دوام الصحة والعافية والتوفيق لك ولجميع الاعضاء .

تحياتي لكم

0

شارك هذا الرد


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

شكرا اخى احمد على التعديل الذى اكسب الموضوع نظاما

وشكرا prof_1982

0

شارك هذا الرد


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

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

أنا الحقيقة أريد أن أتعلم الكثير عن هذه الأداة الرائعة

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

وانا أسف علي الأزعاج

www.codeproject.com/Purgatory/winsock.asp

0

شارك هذا الرد


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

جذاكم الله كل خير

0

شارك هذا الرد


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

انا اسف جدا لانى لم ادخل من فتره طويله

ولكن شكرا على ردودكم computerlibyaاعلم انى تأخرت فى ردى

وانت يا اخ بارودى

0

شارك هذا الرد


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

لدي تعليق على ما تم طرحه سابقا

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

علما انني طبقت نفس الطريقه على ملفات نصية و على هيئة حزم و تنفدت

و شكرا لتعاونكم

0

شارك هذا الرد


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

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

نشكركم على هذا الموضوع ولكن لدينا تسائل

هل تحمل الرساله المرسله من A الى B عنوان الجهاز B (المرسل اليه) وكيف يتم قرأة هذا العنوان من الرساله

0

شارك هذا الرد


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

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

موضوع جميل بارك الله فيك أخي

انا منذ مدة حولي سنتين تقريبا قمت بتصميم برنامج "أختراق" ليس طبعا بنية التخريب ولكن بنية معرفة التعامل مع الوينسوك و فعلا اشتغل 100/100 لكن المشكلة التي صادفتها و التي أظن انها مشكلة في الأداة نفسها هي أنني عندما أريد الأتصال بجهاز في سايبر او متصل تحت راوتر لا يربط الأتصال ... بل ينجح فقط اذا كان الـصال مع جهاز متصل مباشرة مع النت

السؤال هو هل المشكل فعلا في الأداة ام الكود الذي كتبته ؟؟؟؟؟؟؟

0

شارك هذا الرد


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

شكرا على الشرح

ولكن انا لم اجد الاداة التي تتكلم عنها عندي ( winsock)

أرجو انا تخبرني من اين احضرها وكيف اثبتها ا1ا امكن

وشكرا مرة اخرى :rolleyes:

0

شارك هذا الرد


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

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

كما ان في كود المستقبل (سيرفر) يأتني الخطأ عند Form1_Load في الخاصية close,error في الاداة winsock الخطا يقول sub or function not define

أرجو المساعدة

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

لقد وضعت جميع ال state للوينسوك ولكن وجدت انه يصل الى الحالة 1 فقط "فتح اتصال) لا ادري ما هعي المشكلة ارجو ان تجيبوني

وشكرا

سامر

تم تعديل بواسطه abusamra83
0

شارك هذا الرد


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

team2005

اخى ان الملفات التى شرحت عليها تلك الطريقة هى الملفات النصية

وكان كلامى لمجرد فهم الطريقة لكن فى الملفات الكبيرة الغير نصية يجب ان تعطى البرنامج الوقت الكافى

لارسال البيانات وكذلك التأكد من ارسالها وتركيبها حت لا يحدث اى خلل

0

شارك هذا الرد


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

golden knoweldge

العفو

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

اما المرسل فقام بالاتصال بناءاً على عنون المستقبل الذى هو هنا 127.0.0.1 وهو الاى بى فى حالة

عدم الاتصال بالنت

0

شارك هذا الرد


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

crazy-man

هذا يتوقف على نوع الاتصال

فمثلا احيانا النت كافية تكون كل اجهزته لها نفس الاى بى وفى هذة الحالة -اعتقد- ان الاتصال لن يتم

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

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

0

شارك هذا الرد


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

abusamra83

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

واكرر اعتذارى :D

0

شارك هذا الرد


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

ممكن الايميل اخويي ahmedmummy

وشكرااا

0

شارك هذا الرد


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

لقد ارسلت لك الايميل فى رساله خاصه

وان كان عندك سؤال ممكن تسأله هنا علشان تعرف اكتر من رأى

0

شارك هذا الرد


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

crazy-man

اخى ممكن تستخدم الطريقة bind بعد الطريقه listen

فى حالة الشبكات الداخليه المتصله بالنت

0

شارك هذا الرد


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

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

الأخ العزيز ahmedmummy ألف شكر على موضوعك الرائع و جزاك الله ألف خير ,,,

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

ولكن واجهتني مشكلة غريبة أتمنى أن أجد حلها عندك ,,, وهي :

أنني عندما أحاول الإتصال بجهاز يكون رقم الآيبي تبعه على نطاق : 10.0.0.0 أو على نطاق 198.0.0.0

لا أستطيع الإتصال به و لكن عندما أقوم بالإتصال بأجهزة من نطاقي مثل : 212.0.0.0

يقبل الإتصال بدون مشاكل !!!!!

فما السبب ؟؟؟

ولك الشكر مقدماً ,,,

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .