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

[ تمت الإجابة ]مكتبة socket في البايثون

مغلقمُجاب
بدأه hello.python في 5 أبريل 2013 · 5 رد · 2,832 مشاهدة · في لغة Python
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

لأنه والله لم افهم فيها شيء

فضلا أعينون

#2

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

 

لم توضّح الى ماذا تهدف من تعلمها الا أنني أظن أنك لست بحاجتها، أو على الأقل هناك خيارات أفضل لك. مكتبة socket مكتبة منخفضة المستوى، بمعنى أنك بحاجة لبناء بروتوكولك الخاص لإستخدامها، غالباً مايتم بإستخدام struct، أو أنك تريد إضافة بروتوكول غير مدعوم أي يلزم أن يكون لديك خبرة مسبقة في الشبكات والبروتوكول الذي تريد اضافته، وهذا مالايعلمه كثير من متعلمين الـsocket، يتعلمها في الأخير لايجد تطبيق وينساها.

 

بايثون توفر دعم لعدد من البوتوكولات الجاهزة في نفس اللغة كـhttp و ftp و telnet وsmtp وهناك العديد من المكتبات الغير قياسية لبروتوكلات جاهزة، حدد حاجتك وابحث عن البروتوكول المناسب.

تم تعديل هذه المشاركة بواسطة Mr.B في 5 أبريل 2013 في 22:57

1
#3

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

تم تعديل هذه المشاركة بواسطة hello.python في 5 أبريل 2013 في 23:36

#4 أفضل إجابة

هناك الكثير من الأمثلة على هذا الموضوع. في فحص المنافذ تقوم بإنشاء اتصال مع الخادم بالمنافذ من 0 إلى أعلى منفذ 65535 وتصنف المنافذ حسب التالي:

  1. إذا انشيء الإتصال فالمنفذ مفتوح.
  2. إذا رفض الإتصال فالمنفذ مغلق.
  3. إذا مضى وقت دون الحصول على رد، timeout، فالمنفذ محجوب من الجدار الناري.

هذا تطبيق على خادم يحتوي الحالات الثلاث:

 

#!python
# -*- coding: utf-8 -*-

import socket
import time

MAX_PORT = 65536

host = 'openbsd.org'

try:
    for port in [80, 113, 21]:# xrange(0, MAX_PORT):
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.settimeout(15)
        try:
            s.connect((host, port))
            print('port {0:5} : open'.format(port))
        except socket.timeout, e:
            print('port {0:5} : filtered ({1})'.format(port, e))
        except socket.error, e:
            print('port {0:5} : close    ({1})'.format(port, e))
        s.close()
        time.sleep(1)
except KeyboardInterrupt:
    exit(0)
1
#5

إذا لديك خبرة في السي ستجد هذا الكتاب تفصيلي وسيفيدك في أي لغة ستستخدمها

http://beej.us/guide/bgnet/

 

 

*قمت بتعديل الموضوع لتمت الإجابة بعد جواب Mr.B الكافي

تم تعديل هذه المشاركة بواسطة ahmed_youssef في 6 أبريل 2013 في 10:48

1
(map share people)

فضلا لاتقم بمراسلتي من أجل أسئلة لها أقسامها في المنتدى حتى تعم الفائدة على الجميع وللحصول على إجابات أفضل من أعضاء أكثر خبرة.
Weblog
@bitbucket
@xmonader

#6

جزاكم الله خيرا الآن إتضحت الفكرة لي

فقط أردت أنوه الأخ Mr.B في السكربت لي وضعه في سطر

s.connect((host, port)) لا يقبلها البايثون ويمكن تعوضيعها بي هذه

 

socket.create_connection((host, port))

 

لم أفهم هذا الجزء

 

try:
    for port in [80, 113, 21]:# هذه مفهومة
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#مفهومة
        s.settimeout(15)#مفهومة
        try:#مفهومة
            s.connect((host, port))#مفهومة
            print('port {0:5} : open'.format(port))#لم افهمه والمافئدة من format
        except socket.timeout, e:#من أين جاء متغير e
            print('port {0:5} : filtered ({1})'.format(port, e))#نفس الشيء لم افهم السطر كله
        except socket.error, e:
            print('port {0:5} : close    ({1})'.format(port, e))#ونف س الشيء هنا أيضا لم أفهم السطركله
        s.close()
        time.sleep(1)

وفي أحد السكربتات وجدت هذا الأمر

 

s.recv(1024)

مالفائدة منه وما عمله

 

ياليت تشرحه لي

 

وشكرا لك يا أخ الفاضل

تم تعديل هذه المشاركة بواسطة hello.python في 7 أبريل 2013 في 01:06

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

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