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

كود غلق بورت معين

مغلق
بدأه students في 7 فبراير 2005 · 42 رد · 5,744 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

لم افهم إلى ماذا يشير المتغير tcptablerow وما هي الطريقة التي عرفتي

بها هذا المتغير(بالتفصيل لو سمحتي) ، كذلك عن الدالة copy memory لقد قرات

عنها ولكني لم افهم إلى ماذا تشير المتغيرات التي وضعتها.

وشكرا.

سبحان الله وبحمده سبحان الله العظيم

#2

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

اخي الكريم tcptablerow هو سجل من جدول TCPTable .. و هذا الجدول يحوي على معلومات عن جميع الاتصالات التي تجرى حالياً (و منها المنفذ الذي يتم الاتصال منه و المنفذ الذي يتم الاتصال به ..) المعلومات التي يقدمها هذا الجدول هي نفسها التي يقدمها الامر NetStat الذي نكتبه في الـ Dos ...

اما الامر CopyMemory فهو من اجل نسخ سجلات هذا الجدول من الذاكرة (لانه هناك بالطبع) .. الى الشاشة عندي او من اجل معرفة المنفذ الذي نريد الاتصال به و او اوقف الاتصال ان لم يكن مسموحاً ... فقط :)

بنت اليمن ،،

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#3

اشكركي على هذا التوضيح . ولكن

اقتباس
هو سجل من جدول TCPTable .. و هذا الجدول يحوي على معلومات عن جميع الاتصالات التي تجرى حالياً (و منها المنفذ الذي يتم الاتصال منه و المنفذ الذي يتم الاتصال به ..) المعلومات التي يقدمها هذا الجدول هي نفسها التي يقدمها الامر NetStat الذي نكتبه في الـ Dos ...

ما هي الطريقة البرمجية (الكود) التي ترجمت بها الكلام السابق(إذا لم يكن فيها ازعاج) :)

سبحان الله وبحمده سبحان الله العظيم

#4

اشكركي على هذا التوضيح . ولكن

(هو سجل من جدول TCPTable .. و هذا الجدول يحوي على معلومات عن جميع الاتصالات التي تجرى حالياً (و منها المنفذ الذي يتم الاتصال منه و المنفذ الذي يتم الاتصال به ..) المعلومات التي يقدمها هذا الجدول هي نفسها التي يقدمها الامر NetStat الذي نكتبه في الـ Dos ...)

ما هي الطريقة البرمجية (الكود) التي ترجمت بها الكلام السابق(إذا لم يكن فيها ازعاج) :)

سبحان الله وبحمده سبحان الله العظيم

#5

امممممممممممم ، انت تعرف اني لا استطيع ان اعطيك هذا الجزء من الكود لانه ليس ملكي ، بل اصبح ملك للجامعة التي تخرجت منها ، :wacko: و لكني سأعطيك كود اخر و جدته على النت يقوم بهذه العملية ;)

بنت اليمن ،،

تم تعديل هذه المشاركة بواسطة بنت اليمن في 7 فبراير 2005 في 15:05

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#6

الأخت الفاضلة بنت اليمن هل يمكن أن أطرح عليكي سؤال:

ماهو إسم الجامعة التي درستي فيها؟؟؟؟؟؟؟؟؟

#7

:) ، اممممممم ، لا اعتقد ان ذلك ممكن ، و لا تسأليني لماذا !! :)

بنت اليمن ،،

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#8

إذا لم يكن بلإمكان معرفة إسم الجامعة؟؟؟؟؟؟؟

أتمنى أن يكون بإمكانك تقديم المساعدة لي في معرفة الخطأ في الكود التالي:

حيث حاولت مثل الأخ students في إغلاق المنفذ 80 الخاص http إلا أن المتصفح يستمر في عرض صفحات الأنترنت حتى بعد تنفيذ البرنامج ؟؟؟

Socket serialPort1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

System.Net.IPAddress LocalIPAddress = System.Net.IPAddress.Parse("127.0.0.1");

System.Net.IPEndPoint

LocalEndPoint = new System.Net.IPEndPoint( LocalIPAddress,80 );

serialPort1.Connect(LocalEndPoint);

serialPort1.Blocking = false;

serialPort1.Shutdown(SocketShutdown.Both);

rialPort1.Close().

#9

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

اهلاً اختى كاثي .. بالنسبة للكود الذي وضعتيه ، فهو يعتمد على API و كلاس جاهز .. صح ؟؟ و حسب ما فهمت من الكود انكي قمتي بإنشاء قناء الاتصال بالامر :

Socket serialPort1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

و بعدها وضعتي مواصفات هذا السوكيت (عنوان المتصل و المنفذ) :

ystem.Net.IPAddress LocalIPAddress = System.Net.IPAddress.Parse("127.0.0.1");
System.Net.IPEndPoint
LocalEndPoint = new System.Net.IPEndPoint( LocalIPAddress,80 );

الى الآن حلو الكلام .. لكن بعدها لم افهم الكود .. و لكن دعيني اشرح لك آلية غلق منفذ (اي منفذ ، و على سبيل المثال المنفذ 80) ..

عندما يتم الاتصال بأي جهاز يتم ادراج بيانات الاتصال في الجدول TCP Table (الموضح اعلاه :) ) .. و الفكرة في غلق المنفذ (اي قطع الاتصال بأي منفذ يطلب الاتصال بمنفذ اخر و ليكن 80) علينا ان نراقب الجدول TCP Table ... فإذا حدث و ان تم طلب الاتصال بالمنفذ 80 .. نقوم بقطع الاتصال .. هل اسمع كيف ؟؟؟ .. من بيانات الحدول TCP حقل اسمه حالة الاتصال .. و عندما اريد غلق اتصال ما .. ادخل الى محتويات هذا الجدول و من ثما الى السجل الذي اريد توقيف اتصاله و احول حالة الاتصال الى غلق Block ... و هذه هي الفكرة ... ارجوا ان تكوني فهمتيها ،،

تحياتي ،،

بنت اليمن ،،

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#10

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

tcptablerow , arrBuffer وكيفية استخدامهم في الدالة المرفقة.

وجزاكي الله الف خير.

#11

حياكي الله اختي كاثي .. و جزاك خيراً مثله :) بالنسبة للتعريف المتغيرات فسوف تجديه في البرنامج الذي ارفقته حول الـ TCP Table .. و اليكي ايضاً السطر الخاص بتغير حالة الاتصال الى غلق (و هو جزء من شفرت نظام التحكم بمنافذ الشبكة عن بعد) :

    TcpTableRow.dwState = 12
    SetTcpEntry TcpTableRow

و ارجوا لكي التوفيق ،،

بنت اليمن ،،

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#12

أختي بنت اليمن لقد حاولت أن أستخدم الطريق التي ذكرتها لإغلاق البورت حيث قمت بعمل برنامج أدخل رقم البورت الذي أريد ومن ثم أقوم بإغلاقه.

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

#13

ما رأيك ان ترفقي الكود حتى نراه معاً ؟؟ :)

بنت اليمن ،،

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#14

هذ ا هو الكود .

Tcp_Table.zip

#15

OK ... سأحاول مراجعتها اليوم .. :)

بنت اليمن ،،

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#16

مرحباً اختي كاثي .. لقد نفذت البرنامج الذي ارفقتيه .. و يوجد به مشاكل (اعتقد مع الـ List) .. عموماً ارفق لكي برنامج اسمه GetTcpTable .. وظيفته الاصلية هي عرض قائمة الـ TcpTable و لكني عدلته ليقوم بغلق المنفذ 80 .. بحيث انكي لن تستطيعي فتح اي موقع Http .. :) فقط نفذي البرنامج المرفق Test_BlockPort (و هو ملف EXE) ، ثم حاولي ان تفتحي اي موقع !!! ;) .. و انا اتوقع منك الآن مجموعة من الاسئلة .. و لن اتأخر عنكي مدمت اقدر ان شاء الله ..

بنت اليمن ،،

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#17

أختي الفاضلة بنت اليمن :

أشكركي جزيل الشكر على إهتمامك بالموضوع وأسأل الله أن يجعل ذلك في ميزان حسناتك.

ويبدو أنه كما توقعتي حيث لدي مجموعة من الاسئلة :

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

2- عند تنفيذ البرنامج يقوم بإغلاق البورت ولايمكن بعد ذلك فتح أي صفحة أنترنت ولكن بعد إنهاء التنفيذ يعود بإمكني فتح صفحات الإنترنت هل هذا يعني أن إغلاق البورت لا يكون مستمر ؟؟؟

3- عملية الفحص المستمرة هل تؤدي الى بطئ مثل هذة البرامج؟؟؟

وشكراً

#18

اهلاً اخت kathy .. و اشكرك على الدعوة الطيبة ...

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

المرفق ايضاً يحتوي على الشفرة (ملف vbp) بالأضافة الى الملف التنفيذي ..

اقتباس
عند تنفيذ البرنامج يقوم بإغلاق البورت ولايمكن بعد ذلك فتح أي صفحة أنترنت ولكن بعد إنهاء التنفيذ يعود بإمكني فتح صفحات الإنترنت هل هذا يعني أن إغلاق البورت لا يكون مستمر ؟؟؟

ما اجل ذلك وضعت نظام المتحكم في منافذ الشبكة ضمن برامج الـ Start Up (اي في Sys Tray) .. حيث ان هذه البرامج تعمل مع بدأ الويندوز عمله و تكون في خلفية الاداء Background ... و بالتالي لا يتم غلق البرنامج اصلاً و يكون مراقب للمنافذ على طول ...

اقتباس
عملية الفحص المستمرة هل تؤدي الى بطئ مثل هذة البرامج؟؟؟

لا اعتقد ذلك (على الاقل في نطاق تجربتي) .. لماذا ؟ لأنه برنامج مراقبه بسيط على المعالج و خفيف على الذاكرة :D ... و عموماً كل شيء نستفيد منه له مقابل .. صح ؟؟

و اتمنى لكي التوفيق ،،

بنت اليمن ،،

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#19

عفوا أختي بنت اليمن لكن البرنامج لا يفتح لا أعرف ما هو السبب؟؟؟

#20

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

ولكن أعاني من نفس المشكلة التي تعاني منها الاخت كاثي وهي أن البرنامج لا يفتح

معي أيضا ولا أعرف ما السبب.

وشكرا. (h)

سبحان الله وبحمده سبحان الله العظيم

#21

اعتذر :rolleyes:

.. اعتقد اني اخطأت في الضغط ... اليكم المرفق مرة اخرى ،،

لقد قمت بتغير المرفق .. اعتذر مرة اخرى ، حدث معي خطأ

بنت اليمن ،،

تم تعديل هذه المشاركة بواسطة بنت اليمن في 13 فبراير 2005 في 14:57

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#22

الأخت العزيزة بنت اليمن أطلعت على البرنامج المرفق ولدي الأسئلة التالية:

- لماذا أستخدمت البورت 2480 لإغلق البورت http رغم أن البورت المخصص لذلك هو80

ـ لماذا استخدمتي الـ TcpTableRow.dwRemotePort ولم تستخدمي TcpTableRow.dwLocalPort لأنه من المفترض أن أقوم بإغلاق البورت المحلي الخاص بجهازي.

- قمت بتعديل البرنامج الذي كنت قد أرفقته في المرة السابقة لكن عند التنفيذ كنت أدخل الرقم 80 ويقوم بإغلاق البورت لكن عندما أستخدم البورت الذي كتبته أنتي يرفض أن يغلق البورت .

وحتى تطلعي عليه أرفقته بالرابط التالي وسأنتظر ملاحظاتكي عليه.

وشكرا .

tcb_vb.zip

#23

اختي الكريمة كاثي .. لقد غيرت الملف المرفق الى اخر يجيب عن تساؤلك الاول و الثالث .. حيث ان الرقم 2480 يكافيء الرقم 80 قبل عملية التحويل .. و التي تعمله الدالة GetTcpPortNumber .. عموماً فقط القي نظرة على المرفق الجديد و ستلاحظين الفرق ..

(ـ لماذا استخدمتي الـ TcpTableRow.dwRemotePort ولم تستخدمي TcpTableRow.dwLocalPort لأنه من المفترض أن أقوم بإغلاق البورت المحلي الخاص بجهازي.)

لا يا عزيزتي كاثي ... نحن نريد ان نوقف خدمة ما .. اي ان نوقف الاتصال مع منفذ (بعيد) يؤدي لي هذ الخدمة و بالتالي عليّ ان اوقف اي طلب لمنفذ بعيد dwRemotePort يمثل الرقم 80 !! فقط ..

بالتوفيق ،،

بنت اليمن ،،

تم تعديل هذه المشاركة بواسطة بنت اليمن في 13 فبراير 2005 في 21:53

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#24

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

(وضعت نظام المتحكم في منافذ الشبكة ضمن برامج الـ Start Up (اي في Sys Tray) .. حيث ان هذه البرامج تعمل مع بدأ الويندوز عمله و تكون في خلفية الاداء Background ... و بالتالي لا يتم غلق البرنامج اصلاً و يكون مراقب للمنافذ على طول ...

)

ما هي الخطوات التي اتبعتها لذلك.

وشكرا. (h)

سبحان الله وبحمده سبحان الله العظيم

#25

اهلاً اخي students .. سأبحث لك عن كود جيد يقوم بهذه العملية ..

بنت اليمن ،،

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

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

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