ازگر میں ساکٹ پروگرامنگ کیا ہے اور اس میں مہارت کیسے حاصل ہے؟



اچار اور ساکٹ کا استعمال کرتے ہوئے ازگر اشیاء منتقل کرنے کے ساتھ کلائنٹ سرور مواصلات کے ساتھ ازگر میں ساکٹ پروگرامنگ کیا ہے جانیں۔

انٹرنیٹ بلا شبہ ’وجود کی روح‘ بن گیا ہے اور اس کی سرگرمی کی خصوصیات ‘رابطے’ یا ‘نیٹ ورکس’ ہے۔ ان نیٹ ورکس کو ان میں سے ایک اہم ترین بنیادی اصول کا استعمال کرتے ہوئے ممکن بنایا گیا ہے ساکٹ۔ اس مضمون میں ازگر میں ساکٹ پروگرامنگ سے متعلق تمام شعبوں کا احاطہ کیا ہے۔ ساکٹ ان رابطوں کو بنانے میں آپ کی مدد کرتا ہے ، جبکہ ، بلا شبہ ، اسے آسان بنا دیتا ہے۔

آئیے اس مضمون میں شامل تمام عنوانات پر ایک سرسری نظر ڈالیں:





ساکٹ کیوں استعمال کریں؟
ازگر میں ساکٹ کیا ہیں؟
ازگر میں ساکٹ پروگرامنگ کیسے حاصل کریں
سرور کیا ہے؟
ایک مؤکل کیا ہے؟
ایکو کلائنٹ سرور
متعدد مواصلات
ازگر آبجیکٹ کی منتقلی



ساکٹ کیوں استعمال کریں؟

ساکٹ نیٹ ورکنگ کی ریڑھ کی ہڈی ہیں۔ وہ دو مختلف پروگراموں یا آلات کے مابین معلومات کی منتقلی کو ممکن بناتے ہیں۔ مثال کے طور پر ، جب آپ اپنے براؤزر کو کھولتے ہیں تو ، بطور کلینٹ آپ معلومات کی منتقلی کے لئے سرور سے رابطہ قائم کررہے ہیں۔

اس مواصلات کو گہرائی میں غوطہ لگانے سے پہلے ، پہلے یہ معلوم کریں کہ یہ ساکٹ اصل میں کیا ہیں۔

ساکٹ کیا ہیں؟

عام اصطلاحات میں ، ساکٹ اعداد و شمار بھیجنے اور وصول کرنے کے لئے تعمیر کردہ داخلی نقطہ ہوتے ہیں۔ ایک ہی نیٹ ورک میں دو ساکٹ ہوں گے ، ہر ایک مواصلاتی آلہ یا پروگرام کے لئے۔ یہ ساکٹ آئی پی ایڈریس اور پورٹ کا مجموعہ ہیں۔ کسی ایک آلہ میں پورٹ نمبر پر مبنی ساکٹ کی تعداد میں ’این‘ ہوسکتی ہے جو استعمال ہورہی ہے۔ مختلف قسم کے پروٹوکول کے لئے مختلف بندرگاہیں دستیاب ہیں۔ عام بندرگاہ نمبروں اور متعلقہ پروٹوکول کے بارے میں مزید معلومات کے لئے درج ذیل تصویر پر ایک نظر ڈالیں:




مشترکہ بندرگاہیں۔ ساکٹپروگرامنگین پائتھن-ایڈوریکا

اب جب کہ آپ ساکٹ کے تصور کے بارے میں واضح ہیں ، آئیے اب آیتھون کے ساکٹ ماڈیول پر ایک نظر ڈالیں:

ازگر میں ساکٹ پروگرامنگ کے حصول کا طریقہ:

ازگر میں ساکٹ پروگرامنگ حاصل کرنے کے ل you ، آپ کو درآمد کرنا ہوگا ساکٹ ماڈیول یا . یہ ماڈیول ان بلٹ ان طریقوں پر مشتمل ہے جو ساکٹ بنانے کے لئے درکار ہیں اور ایک دوسرے کے ساتھ منسلک ہونے میں ان کی مدد کرتے ہیں۔

کچھ اہم طریقے مندرجہ ذیل ہیں۔

طریقےتفصیل

ساکٹ.سکٹ ()

ساکٹ بنانے کے لئے استعمال کیا جاتا ہے (ساکٹ بنانے کے لئے دونوں سرور کے ساتھ ساتھ کلائنٹ بھی ختم ہوتا ہے)

ساکٹ.ایسیپٹ ()

کنکشن قبول کرنے کے لئے استعمال کیا جاتا ہے۔ یہ اقدار (جوڑ ، پتہ) کا ایک جوڑا واپس کرتا ہے جہاں اعداد و شمار بھیجنے اور وصول کرنے کے لئے کونک ایک نیا ساکٹ آبجیکٹ ہوتا ہے جس میں کنکشن کے دوسرے سرے پر موجود ساکٹ کا پتہ ہوتا ہے

ساکٹ.بائنڈ ()

ایڈریس پر پابند ہونے کے لئے استعمال کیا جاتا ہے جو پیرامیٹر کے طور پر مخصوص ہوتا ہے

ساکٹ.کلوز ()

جاوا میں پیکیج کیا ہیں؟
ساکٹ کو بند ہونے کے بطور نشان زد کرتا تھا

ساکٹ کنیکٹ ()

پیرامیٹر کے بطور مخصوص ریموٹ ایڈریس سے رابطہ کرنے کیلئے استعمال ہوتا ہے

ساکٹ ڈاٹ لیسٹن ()

سرور کو کنکشن قبول کرنے کے قابل بناتا ہے

اب جب آپ ساکٹ ماڈیول کی اہمیت کو سمجھ چکے ہیں ، تو چلتے ہیں یہ دیکھنے کے لئے کہ یہ کس طرح ساکٹ پروگرامنگ کے لئے سرورز اور مؤکل تیار کرنے میں کام کرسکتا ہے۔ .

ایک سرور کیا ہے؟

سرور یا تو ایک پروگرام ، ایک کمپیوٹر ، یا ایک ایسا آلہ ہوتا ہے جو نیٹ ورک کے وسائل کو سنبھالنے کے لئے وقف ہوتا ہے۔ سرور یا تو ایک ہی ڈیوائس یا کمپیوٹر پر ہوسکتے ہیں یا مقامی طور پر دوسرے ڈیوائسز اور کمپیوٹرز یا یہاں تک کہ ریموٹ سے منسلک ہوسکتے ہیں۔ سرور کے بہت سارے اقسام ہیں جیسے ڈیٹا بیس سرورز ، نیٹ ورک سرورز ، پرنٹ سرور وغیرہ۔

سرور عام طور پر طریقوں جیسے ساکٹ ڈاٹ (ساکٹ () ، ساکٹ۔بائنڈ () ، ساکٹ ڈاٹسٹن () وغیرہ کا استعمال کرتے ہیں تاکہ کسی کنکشن کو قائم کیا جاسکے اور مؤکلوں کو پابند کیا جاسکے۔ اب سرور بنانے کے لئے ایک پروگرام لکھتے ہیں۔ مندرجہ ذیل مثال پر غور کریں:

مثال:

امپورٹ ساکٹ s = ساکٹ۔ ساکٹ (ساکٹ۔ اے ایف این پی ای ٹی ، ساکٹ۔ سوک پروپریام) ایس.بائنڈ ((ساکٹ.جیتھوسٹ نام () ، 1234)) # پورٹ نمبر 0-65535 کے درمیان کچھ بھی ہوسکتا ہے (ہم عام طور پر غیر منحرف بندرگاہوں کی وضاحت کرتے ہیں جو ہیں > 1023) s.listen (5) جبکہ سچ: clt، adr = s.accept () پرنٹ (f'Conction to to {adr} स्थापित ') #f تار لفظی تار ہے جس کے ساتھ f ہے # جس میں # مناظر منحصر خط . بھیجیں (بائٹس ('ازگر میں ساکٹ پروگرامنگ' ، 'utf-8')) # مؤکلوں کو معلومات بھیجنے کے لئے

جیسا کہ آپ دیکھ سکتے ہیں ، ساکٹ بنانے کی پہلی ضرورت ساکٹ ماڈیول کو درآمد کرنا ہے۔ اس کے بعد ساکٹ ڈاٹ ساکٹ () کا طریقہ سرور سائیڈ ساکٹ بنانے کے لئے استعمال ہوتا ہے۔

نوٹ:

اے ایف این ای ای ٹی کا مطلب انٹرنیٹ سے پتہ ہوتا ہے اور اس میں (میزبان ، بندرگاہ) جوڑے کی ضرورت ہوتی ہے جہاں میزبان یا تو کسی خاص ویب سائٹ کا URL ہو یا اس کا پتہ اور پورٹ نمبر ایک عدد صحیح ہوتا ہے۔ SOCK_STREAM TCP پروٹوکول بنانے کے لئے استعمال کیا جاتا ہے۔

باندھ () طریقہ دو پیرامیٹرز کو بطور ٹیپل (میزبان ، پورٹ) قبول کرتا ہے۔ تاہم ، بہتر ہے کہ 4 ہندسوں والے پورٹ نمبر استعمال کریں کیونکہ عام طور پر نچلے اشاروں پر قبضہ ہوتا ہے۔ سن () طریقہ سرور کو کنکشن قبول کرنے کی اجازت دیتا ہے۔ یہاں ، متعدد کنکشن کے لئے قطار 5 ہے جو بیک وقت سامنے آتے ہیں۔ کم سے کم قیمت جو یہاں بیان کی جاسکتی ہے وہ 0 ہے (اگر آپ کم قیمت دیتے ہیں تو ، اسے 0 میں تبدیل کر دیا جاتا ہے)۔ اگر کسی پیرامیٹر کی وضاحت نہیں کی گئی ہے تو ، یہ ایک پہلے سے طے شدہ مناسب لیتا ہے۔

رابطوں کو ہمیشہ کے لئے قبول کرنے کی اجازت دیتا ہے۔ ‘clt’ اور ‘adr’ مؤکل کا اعتراض اور پتہ ہے۔ پرنٹ اسٹیٹمنٹ کلائنٹ ساکٹ کے پتے اور بندرگاہ نمبر پرنٹ کرتا ہے۔ آخر میں ، clt.send بائٹس میں ڈیٹا بھیجنے کے لئے استعمال کیا جاتا ہے۔

اب جب کہ ہمارا سرور بالکل تیار ہے ، آئیے مؤکل کی طرف چلیں۔

جاوا اتلی کاپی بمقابلہ گہری کاپی

ایک مؤکل کیا ہے؟

ایک مؤکل یا تو ایک کمپیوٹر یا سافٹ ویئر ہوتا ہے جو سرور سے معلومات یا خدمات حاصل کرتا ہے۔ کلائنٹ سرور ماڈیول میں ، مؤکل سرور سے خدمات کے ل for درخواست کرتے ہیں۔ اس کی عمدہ مثال ایک ویب براؤزر کی ہے جیسے گوگل کروم ، فائر فاکس ، وغیرہ۔ یہ ویب براؤزر صارف کے ہدایت کردہ مطلوبہ ویب صفحات اور خدمات کے لvers ویب سرورز کی درخواست کرتے ہیں۔ دوسری مثالوں میں آن لائن گیمز ، آن لائن چیٹس ، وغیرہ شامل ہیں۔

آئیے اب ایک نظر ڈالیں کہ کلائنٹ سائیڈ پروگرام میں کوڈ کیسے لگائیں :

مثال:

امپورٹ ساکٹ s = ساکٹ.ساکٹ (ساکٹ. اے ایف این پی ای ٹی ، ساکٹ۔ سوک پروپریام) ایسکونیکٹ ((ساکٹ.جیتھوسٹ نام () ، 2346)) msg ​​= s.recv (1024) پرنٹ (msg.decode ('utf-8')) )

پہلا قدم ساکٹ ماڈیول کو درآمد کرنا ہے اور پھر ساکٹ بنانا ہے جیسے آپ نے سرور بناتے وقت کیا تھا۔ اس کے بعد ، کلائنٹ سرور کے مابین روابط پیدا کرنے کے ل you آپ کو (میزبان ، پورٹ) بیان کرکے کنیکٹ () کا طریقہ استعمال کرنے کی ضرورت ہوگی۔


نوٹ: جب کمپیوٹر اور سرور ایک ہی کمپیوٹر پر ہوتے ہیں تو گیتھوسٹ نام استعمال ہوتا ہے۔ (LAN - لوکلائپ / وان - پبلپ)

یہاں ، موکل سرور سے کچھ معلومات حاصل کرنا چاہتا ہے اور اس کے ل you ، آپ کو recv () طریقہ استعمال کرنے کی ضرورت ہے اور معلومات کو ایک اور متغیر میں محفوظ کیا جاتا ہے۔ ذرا ذہن میں رکھیں کہ جو معلومات پاس کی جارہی ہیں وہ بائٹس میں ہوں گی اور مذکورہ پروگرام میں کلائنٹ ایک ٹرانسفر میں 1024 بائٹ (بفر سائز) وصول کرسکتے ہیں۔ یہ معلومات کی منتقلی کی مقدار پر منحصر ہے کسی بھی رقم کے لئے مخصوص کیا جاسکتا ہے۔

آخر میں ، جو پیغام منتقل کیا جارہا ہے اسے ڈی کوڈ کرکے پرنٹ کرنا چاہئے۔

اب جب کہ آپ کلائنٹ سرور پروگرام تخلیق کرنے کے بارے میں جانتے ہو ، چلیں آگے چل کر یہ دیکھیں کہ انہیں پھانسی دینے کی ضرورت ہے۔

ایکو کلائنٹ سرور:

ان پروگراموں کو عملی جامہ پہنانے کے ل your ، اپنے کمانڈ پرامپٹ کو کھولیں ، اس فولڈر میں داخل ہوں جہاں آپ نے اپنا مؤکل اور سرور پروگرام بنایا ہے اور پھر ٹائپ کریں:

py server.py (یہاں ، server.py سرور کا فائل نام ہے ، آپ py -3.7 server.py بھی استعمال کرسکتے ہیں)

ایک بار جب یہ ہوجائے تو ، سرور چلنا شروع ہوجاتا ہے۔ موکل کو پھانسی دینے کے لئے ، ایک اور سی ایم ڈی ونڈو کھولیں ، اور ٹائپ کریں:

py client.py (یہاں ، client.py کلائنٹ کا فائل نام ہے)

آؤٹ کٹ (سرور):

(نمائندہ)

آئیے بفر کے سائز کو 7 تک کم کرکے ایک ہی پروگرام کی کوشش کریں اور دیکھیں کہ ہمیں کیا حاصل ہوتا ہے:

آؤٹ پٹ:

کلاس جاوا کی مثال

جیسا کہ آپ دیکھ سکتے ہیں ، کنکشن 7 بائٹس کی منتقلی کے بعد ختم کردیا گیا ہے۔ لیکن یہ ایک مسئلہ ہے کیونکہ آپ کو مکمل معلومات موصول نہیں ہوئی ہیں اور کنکشن بند ہے۔ آئیے اس مسئلے کو حل کرنے کے لئے آگے بڑھتے ہیں۔

ایک سے زیادہ مواصلات:

اس سلسلے میں جاری رہنے کے ل receives جب تک کہ موکل کو مکمل معلومات نہیں مل جاتی ہیں ، آپ اس وقت کا استعمال کرسکتے ہیں:

مثال:

درآمد ساکٹ s = ساکٹ.سوکٹ (ساکٹ. اے ایف این پی ای ٹی ، ساکٹ۔ سوک پروپریام) ایس کوونیکٹ ((ساکٹ.جیتھوسٹ نام () ، 2346)) جبکہ سچ ہے: _ = s.recv (7) پرنٹ (msg.decode ('utf- 8 '))

ایک بار جب آپ یہ کر لیتے ہیں تو ، مکمل پیغام 7 بائٹس فی ٹرانسفر میں موصول ہوگا۔

لیکن اس بار ، جیسا کہ آپ دیکھ سکتے ہیں ، کنکشن ختم نہیں ہوتا ہے اور آپ کو کبھی پتہ نہیں چلتا ہے کہ یہ کب ہوگا۔ اور اس میں مزید اضافہ کرنے کے ل what ، اگر آپ واقعی میں نہیں جانتے ہیں کہ موکل سرور سے موصولہ پیغام یا معلومات کتنا بڑا ہے۔ ایسے معاملات میں ، آپ اصل میں مندرجہ ذیل تھوڑا سا کوڈ کو مؤکل کی طرف استعمال کرسکتے ہیں۔

مثال:

full_info = '' جبکہ یہ سچ ہے: _ = s.recv (7) اگر لین (#)<=0: break complete_info += msg.decode('utf-8') print(complete_info) 

سرور سائیڈ پر اس طرح قریبی () طریقہ استعمال کریں:

clt.close ()

اس کی آؤٹ پٹ ذیل کی شبیہہ میں دکھائے جانے کے مطابق ہوگی:

آؤٹ پٹ:



مذکورہ بالا کوڈ کا سبھی بلاک یہ ہے کہ ، معلومات کے سائز کی جانچ کرنا اور اسے ایک وقت میں دو بائٹس کے بفر میں چھاپنا اور اس کے مکمل ہونے کے بعد کنکشن کو بند کرنا۔

ازگر آبجیکٹ کی منتقلی:

یہاں تک کہ آپ کو ڈوروں کی منتقلی کی ابھی ابھی کوئی کامیابی حاصل ہوئی ہے۔ لیکن ، ساکٹ پروگرامنگ میں ازگر آپ کو ازگر اشیاء کو بھی منتقل کرنے کی اجازت دیتا ہے۔ یہ اشیاء کچھ بھی ہوسکتی ہیں جیسے سیٹ ، ٹیپل ، لغت ، وغیرہ۔ اس کو حاصل کرنے کے ل you ، آپ کو ازگر کا اچار ماڈیول درآمد کرنا ہوگا۔

ازگر اچار ماڈیول:

ازگر میں اچار کا اچار ماڈیول تصویر میں آجاتا ہے جب آپ واقعی ازگر میں اشیاء کو سیریلائزڈ یا ڈی سیریلائز کررہے ہیں۔ آئیے ایک چھوٹی مثال پر ایک نظر ڈالیں ،

مثال:

اچار mylist = [1،2، 'abc'] mymsg = اچار.ڈمپس (mylist) پرنٹ (mymsg) درآمد کریں

آؤٹ پٹ: b’x80x03] qx00 (Kx01Kx02Xx03x00x00x00abcqx01e. ’

جیسا کہ آپ دیکھ سکتے ہیں ، مذکورہ پروگرام میں ، اچار کے ماڈیول کے ڈمپس () فنکشن کا استعمال کرتے ہوئے ، ‘مائی لسٹ’ سیریلائز کی گئی ہے۔ یہ بھی نوٹ کریں کہ آؤٹ پٹ ایک ’ب‘ سے شروع ہوتی ہے ، مطلب یہ بائٹس میں تبدیل ہے۔ ساکٹ پروگرامنگ میں ، آپ منتقلی کے ل this اس ماڈیول کو نافذ کرسکتے ہیں ازگر اشیاء مؤکلوں اور سرور کے درمیان۔

ازگر اشیاء کے ڈھانچے کو منتقل کرنے کے لئے اچار کے ماڈیول کا استعمال کیسے کریں؟

جب آپ ساکٹ کے ساتھ اچار کا استعمال کرتے ہیں تو ، آپ بالکل بھی نیٹ ورک کے توسط سے کسی بھی چیز کی منتقلی کرسکتے ہیں۔ آئیے سرور کی طرف سے کلائنٹ کو لسٹ منتقل کرنے کیلئے سرور کی طرف اور کلائنٹ سائیڈ ہم منصب لکھتے ہیں:

سرور سائیڈ:

درآمد کریں ساکٹ درآمد اچار a = 10 s = ساکٹ.سوکٹ (ساکٹ. اے ایف این پی ای ٹی ، ساکٹ پی سی آر اے ایم) s.bind ((ساکٹ.جیتھوسٹ نام () ، 2133)) # بائنڈنگ ٹپل س لیسٹن (5) جبکہ سچ ہے: clt، adr = s.accept () پرنٹ (f'Conction to to {adr} स्थापित ') m = {1:' مؤکل '، 2:' سرور '} mymsg = اچار. ڈمپس (م) # ہم ہمیں بعد میں mymsg پرنٹ کرنا چاہتے ہیں = {لین (mymsg): {a} ut 'utf-8') + mymsg clt.send (mymsg)

یہاں ، ایم ایک لغت ہے جو بنیادی طور پر ایک ہے جو سرور سے کلائنٹ کو بھیجنے کی ضرورت ہے۔ یہ پہلے ڈمپس () کا استعمال کرکے آبجیکٹ کو سیریلائز کرکے اور پھر اسے بائٹس میں تبدیل کرکے کیا جاتا ہے۔
اب ہم کلائنٹ سائیڈ ہم منصب کو لکھتے ہیں:

کلائنٹ سائیڈ:

درآمد کریں ساکٹ درآمد اچار a = 10 s = ساکٹ.سوکٹ (ساکٹ. اے ایف این پی ای ٹی ، ساکٹ پی سی آر اے ایم) ایسکونیکٹ ((ساکٹ.جیتھوسٹ نام () ، 2133)) جبکہ سچ: مکمل_ انفو = بی 'ریک_مص = درست ہے جبکہ درست: مائمزگ = s.recv (10) اگر rec_msg: پرنٹ (f'The پیغام کی لمبائی = {mymsg [: a]} ') x = انٹ (mymsg [: a]) rec_msg = غلط مکمل_ انفو + = mymsg اگر لین (full_info) -a == x: پرنٹ ('مکمل معلومات حاصل کی گئی') پرنٹ (مکمل_ انفو [a:]) ایم = اچار.لوڈز (مکمل_ انفو [a:]) پرنٹ (ایم) rec_msg = سچے مکمل_ انفو = بی '' پرنٹ (مکمل_انفو )

پہلی جبکہ لوپ ہمیں بفر کے ذریعے مکمل پیغام (مکمل_انفو) کے ساتھ ساتھ اس پیغام کو بھی ٹریک رکھنے میں مدد کرے گی جو وصول کیا جارہا ہے (rec_msg)۔ rec_ کو ترتیب دے کر پیغام
پھر ، جب میسج موصول ہو رہا ہے ، میں جو کچھ کر رہا ہوں وہ اس کا ہر ایک طباعت کر رہا ہے ، جس کا سائز 10 کے ایک بفر میں وصول کیا جارہا ہے۔ یہ سائز آپ کی ذاتی پسند پر منحصر ہے۔

پھر ، اگر موصولہ پیغام مکمل پیغام کے برابر ہے تو ، میں صرف اس پیغام کو طباعت کر رہا ہوں جیسے موصولہ مکمل معلومات ہوں جس کے بعد میں نے بوجھ () کا استعمال کرتے ہوئے پیغام کو ڈی سیریلائز کردیا ہے۔

مندرجہ بالا پروگرام کی پیداوار اس طرح ہے:

یہ ہمارے ازگر میں ساکٹ پروگرامنگ پر اس مضمون کے آخر تک پہنچا ہے۔ مجھے امید ہے کہ آپ تمام تصورات کو واضح طور پر سمجھ گئے ہوں گے۔

یقینی بنائیں کہ آپ زیادہ سے زیادہ مشق کریں اور اپنے تجربے کو پلٹائیں۔

ہمارے لئے ایک سوال ہے؟ برائے کرم اس 'ساکٹ پروگرامنگ میں ازگر میں' بلاگ کے تبصرے سیکشن میں اس کا تذکرہ کریں اور ہم جلد از جلد آپ کے پاس مل جائیں گے۔

اس کی مختلف ایپلیکیشنز کے ساتھ ازگر میں گہرائی سے آگاہی حاصل کرنے کے ل you ، آپ براہ راست داخلہ لے سکتے ہیں 24/7 کی حمایت اور زندگی بھر تک رسائی کے ساتھ۔