مكتبة socket
درسنا اليوم هو بمجال الشبكات Networking في بايثون وهذا الجزء مهم جداً جداً ,سوف نتحدث عن مكتبات مهمة سوف نتحدث عليها بهذا الجزء وبالأخص مكتبة socket .شرح مافي الصورة السابقة
لدي جهاز كمبيوتر مكتبي نريد ان نوصله بالانترنت و اخذنا له سلك شبكه من الروتر لتغذيته بالأنترنت, معنى ذلك انه سيكون هناك بورت محدد مفتوح بينهما، سيكون في السلك تسير به bits ذهاباً و إياباً, و الكبل بأطرافه Rj-45 لتوصيل النبضات الكهربائيه بين الطرفين، وتكون سرعه الجهاز لدي هي 1mb.وايضاً يكون لدينا لابتوب نستطيع ربطه عبر كبل مثله مثل الكمبيوتر او عبر wifi ، وسوف يأخذ ايبي و بورت بشكل طبيعي نستطيع عمل عليه اختبار عبر nmap وغيره بشكل طبيعي.والاكثر انتشاراً في عالمنا هو هواتفنا الذي بأيدينا ليلاً ونهاراً, نستطيع الأتصال بأي شبكه بشكل لاسلكي عبر wifi ووظيفة الروتر هي الاتصال بهذه الأجهزة وهو مسؤول عن كل شيئ, ويكون على دراية بكل شيئ ضمن هذه الشبكه, نستطيع من خلاله تحديد ايبي اي جهاز متصل او هوست نيم ....... الخ.
فإذا نريد أن يأخذ الكمبيوتر المكتبي انترنت عبر wifi يجب ان نركب له كرت شبكه ويتصل مثله مثل اللابتوب wifi.
امثلة في مكتبة socket
>>> import socket
>>> socket.gethostname() #لمعرفة هوست جهازي
'kali'
>>> socket.gethostbyname('kali') #لمعرفة ايبي جهازي
'127.0.1.1'
>>> port = 22
>>> socket.getservbyport(port) #لمعرفة هذا البورت الذي حددناه
'ssh'
>>> socket.getservbyname("ssh") #عكس العملية السابقة
22
>>>
>>> socket.gethostname() #لمعرفة هوست جهازي
'kali'
>>> socket.gethostbyname('kali') #لمعرفة ايبي جهازي
'127.0.1.1'
>>> port = 22
>>> socket.getservbyport(port) #لمعرفة هذا البورت الذي حددناه
'ssh'
>>> socket.getservbyname("ssh") #عكس العملية السابقة
22
>>>
long host & short host
في المستوى المنخفض من البيانات يلزم ان يحصل على "transmission over rights betwen machine " يكون للجهاز و الشبكة لهما كل واحد صيغة مختلفة, وهذه الصيغه تكون integer يلزم تحويل الصيغة و يوجد long و short .
مثال
لدينا نوعين من البيانات data وهي integer سوف نحولها لـ transmission network format سوف نعمل لها short او long .
>>> import socket
>>> data = 997 #نوع البيانات
>>> socket.htonl(data) #بيانات long
3842179072L
>>> socket.htons(data) #بيانات short
58627
>>> socket.ntohl(3842179072L) #بيانات متحولة معكوسة
997L
>>> socket.ntohs(58627) #بيانات متحولة معكوسة
997
>>> data = 997 #نوع البيانات
>>> socket.htonl(data) #بيانات long
3842179072L
>>> socket.htons(data) #بيانات short
58627
>>> socket.ntohl(3842179072L) #بيانات متحولة معكوسة
997L
>>> socket.ntohs(58627) #بيانات متحولة معكوسة
997
>>>
شرح المثال السابق
في مثالنا استخدمنا الرقم 997 كنوع بيانات و حولناه لنوع بيانات طويلة و قيصرة عبر htonl,htons و بعدها عكسنا العمليات.معنى htonl هي اختصار من الكلمات :
h #host
to #to
n #network
l #long
معنى htons هي اختصار من الكلمات :
h #host
to #to
n #network
s #short
set and get timeout
سوف نتحدث عن timeout مثلا فتحنا جلسة وعملنا الآتي
>>> import socket
>>> sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
>>> sock.settimeout(50) #عدد ثواني الانتظار
>>> sock.gettimeout() #عرض الوقت
50.0
>>>
>>> sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
>>> sock.settimeout(50) #عدد ثواني الانتظار
>>> sock.gettimeout() #عرض الوقت
50.0
>>>
شرح للمثال السابق
قلنا بالمثال ان socket توجد ميثود ثانية اسمها socket بنفس الاسم ولها 2 ارجيومنت أولها هو(socket.AF_INET) يعني الايبي يكون ipv4 و الارجيومنت الثاني هو (socket.SOCK_STREAM) يعني الاتصال مفتوح بين العميل و المخدم في اتصال tcp وبعدها قلنا له الانتظار يكون 50 ثانية و عرضنا الوقت وعرضه بشكل طبيعي.
كي لا نطيل عليكم الدرس نكمله في الدرس القادم .
تعليقات
إرسال تعليق