- 0
سجل دخول لمتابعه هذا
متابعين
0

برمجة الشبكات جزء 2
بواسطة
sof1ane,
-
يستعرض القسم حالياً 0 members
لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .
بواسطة
sof1ane,
لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .
تم النشر منذ
في اطار سلسلة برمجة الشبكات
اضع بين ايديكم سكريبت سرفر بالغة بايثون
مع الشرح
ملاحظات :
-قمت باستخدام البرمجة الموجهة (كلاس ، ميتود = طريقة) لكن يمكن استخدام برمجة الاجرائية في برمجته
المهم هو فهم المبدأ .
-استعملت في السكريبت ip : 127.0.0.1هو للجهاز المحلي يعني لجهازك الخاص و هو اي بي المرافق للعنوان التالي localhost
صورة اثناء تشغيل سكريبت
لتحميل سكريبت بصيغة py
http://www.mediafire.com/?dbld17djgsgbdlo
نبدأ مع الشرح بسم الله
Python
import socket //هنا نقوم باستدعاء المكتبة
class sof1ane_serveur(object): //نقوم بتعريف كلاس جديد
def __init__(self, host='', port=8080): //هنا المشيد والبرامترات الخاصة
self._host, self._port=host, port //ارجاع قيم الهوست و بورت
self.address=(host, port)
// متغير من نوع قائمة وارجاع قيم الهوست وبورت فيه
self.sock=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
//ها نقوم بتحديد كل من
socket types et address (and protocol) families
self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
//ليتم غلق البورت بعد غلق السيرفر SO_REUSEADDR هنا يجب تفعيل
عدم استخدام هذا المر يؤدي الى حدوث خطأ في تشغيل السكريبت مرة اخرى تحت عنوان البورت مشغول
def demarrer(self): // تعريف ميتود جديد
self.sock.bind(self.address)
// ربط العنوان الخاص بالخادم الذي يتم تنفيذ البرنامج عليه
self.sock.listen(1)
//تجهيز الخادم لاستقبال الاتصالات منالشبكة مع تحديد عدد معين للاتصالات لاستقبالها
print "Server s'executant sur: ", self._port
self.gerer_con()
// نستدعي الطريقة تسيير الاتصال الذي سنتطرق اليها
def handle_request(self):
// تعريف الطريقة تسيير الاتصال
while True:
//حلقة غير منتهية لانتظار الاتصال
clientsock, addr=self.sock.accept()
//لحضة قبول الأتصال نستقبل عنوان الأي بي الخاص بالعميل و مع توفير منفذ محلي
اهمية كبيرة نضرا لانها ترجع لنا كائن العميل مع عنوانه accept() ملاحظة للطريقة
print "Connexion à partir de: ", addr
clientsock.sendall(str(addr)+" vous etes connecte au serveur...")
// ارسال رسالة نجاح الاتصال
while True:
msg=clientsock.recv(100)
//مع الكائن الذي انشأته الطريقة send et recv تستخدم
و 100 تمثل عدد الاحرف القصوى في كل رسالة accept()
if msg:
print ">> ", msg
clientsock.sendall(msg)
// >> ارسال رمز
الذي يبين جاهزية استقبال الرسائل للعميل
clientsock.close()
if __name__=="__main__":
try:
serveur=sof1ane_serveur()
serveur.start()
except KeyboardInterrupt:
exit()
// تنفيذ البرنامج الرئيسي مع التعامل مع الاخطاء في حال حدوثها
اي استفسار انا موجود
ان أخطــــــــــــــأت فمن نفــــــــــــسي وأن أصــــــــــبت فمـــــــن الله
شارك هذا الرد
رابط المشاركة
شارك الرد من خلال المواقع ادناه