يك تكنولوژي پر قدرت از پايتون را بشناسيد

اين وبلاگ براي آموزش برنامه نويسي مي باشد.

يك تكنولوژي پر قدرت از پايتون را بشناسيد

۹۰ بازديد

استفاده از اتصال پايتون سوكت

در زمينه برنامه نويسي شبكه ، پايتون سوكت يك مفهوم انتزاع در هر دو انتهاي يك شبكه متصل است.از ديدگاه رايانه ، سوكت واسط است كه يك برنامه را در داخل يك كامپيوتر به خارج از شبكه وصل مي كند. مفهوم سوكت فراتر از محدوده اين مقاله نيست ، بلكه پنجره اي براي ارسال و دريافت بايستي از طريق شبكه است. بر خلاف استاندارد I / O كه به سادگي داخل و خارج يك برنامه را بهم متصل مي كند ، سوكت ها حاوي اطلاعاتي هستند كه طرف ديگر شبكه كجاست. به عبارت ديگر ، مانند جعبه پيك است كه مي گويد سوكت پنجره اي است كه به آنجا فرستاده مي شود ، شبيه به قرار دادن چيزي در جعبه و ارسال آدرس گيرنده هنگام ارسال پيك.

ماژول سوكت Python يك ماژول است كه API را فراهم مي كند كه تماس هاي سيستم را براي برنامه نويسي سوكت بسته مي كند. البته سوكت هايي براي ارتباط سوكت ايجاد و استفاده مي شوند كه براي سرورها و مشتري ها كمي متفاوت است.

 

ايجاد سوكت

با استفاده از عملكرد socket.socket () مي توانيد يك شيء سوكت ايجاد كنيد. براي انجام شبكه سازي با سوكت هايي مانند سرور يا مشتري ، ابتدا بايد سوكت برقرار كنيد. اين عملكرد دو آرگومان را مي گيرد: يك خانواده و يك نوع.

خانواده: اولين بحث خانواده است. خانواده سوكت ها در مورد "سيستم آدرس دهي جعبه هاي پيك چيست" است و اغلب از AF_INET يا AF_INET6 استفاده مي كند. مورد اول براي IP4v و دومي براي IP6v استفاده مي شود. به ترتيب به عنوان سوكت تعريف شده است. AF_INET و سوكت .AF_INET6.

نوع: نوع سوكت. سوكت هاي خام ، سوكت هاي جريان و سوكت هاي ديتاگرام وجود دارد كه رايج ترين آنها سوكت است. SOCK_STREAM يا سوكت. SOCK_DGRAM.

متداول ترين تركيب سوكت. AF_INET و socket.SOCK_STREAM در واقع آرگومان پيش فرض براي خانواده = و نوع = سوكت است. (). بنابراين ، اگر مي خواهيد اين نوع سوكت را ايجاد كنيد ، برخلاف بسياري از آموزش هاي سوكت Python ، مي توانيد آرگومان را حذف كنيد و فقط از socket.socket () استفاده كنيد.

متداول آموزش ديد سوكت. AF_INET و سوكت .SOCK_STREAM در حقيقت آرگومان پيش فرض براي خانواده = و نوع = سوكت است. () با استفاده از پايتون ، مي توانيد آرگومان را حذف كرده و از آن پاك كنيد ،

در ارتباطات  پايتون سوكت ، سرور معمولاً گره اي است كه اولين گيرنده است. بنابراين سرور يك سوكت ايجاد مي كند ، آن را به درگاه نقشه مي كند و منتظر است تا مشتري متصل شود. عملكرد سرور نقشه برداري سوكت به درگاه را الزام آور مي نامند ، كه روش sock.bind () را روي شيء سوكت ايجاد شده مي نامد. هنگام فراخواني اتصال () ، نام ميزبان و شماره پورت در يك tuple پيچيده مي شود.

 

اتصال عبارت است از اتصال سوكت ، رابط برنامه و پورت ، منبع شبكه. بنابراين ، برنامه نويس بايد بداند كه تعداد پورت هايي كه صريحاً از آنها استفاده مي كنند و IP آنها چيست. (مي دانيد كه مي دانيد كه به طور جدي تعيين مي كنيد.)

پس از اتمام اتصال ، تنها كاري كه بايد انجام دهيد گوش دادن است. اين كار با فراخواني روش listen () در سوكت انجام مي شود. اين روش يك عملكرد مسدود كننده است كه در انتظار مشتري براي اتصال به درگاه محدود است. هنگامي كه يك درخواست اتصال از مشتري وارد مي شود ، باز مي گردد ، بنابراين خط بعدي كد معمولاً بخشي است كه براي پذيرش اتصال ، متد accecpt () را فراخواني مي كند.

قبول () يك توپل متشكل از (سوكت ، اطلاعات آدرس) را برمي گرداند. در اين حالت ، سوكت يك شي جدا از سوكت است كه در ابتدا ايجاد شده است ، و اتصال با مشتري برقرار مي شود تا به پنجره اي براي ارسال و دريافت داده هاي واقعي تبديل شود. از آنجا كه اين سوكت مي تواند هر بار ايجاد شود كه گوش دادن () يا پذيرش () هنگام اتصال فراخواني شود ، مي تواند اتصالات 1: N را كنترل كند اگر سوكت كه اتصال به آن پيكربندي شده است ، چند لايه است.

 

ارسال و دريافت اطلاعات

براي ارسال اطلاعات از socket.recv () براي خواندن داده ها از سوكت و socket.sendall () استفاده كنيد. هنگام خواندن داده ، اندازه بافر بايد منتقل شود.

( socket.recv (bufsize مي خواند تا بايت هاي داده را bufsize كند. اگر داده اي براي خواندن وجود ندارد ، صبر كنيد تا طرف مقابل داده را ارسال كند.

 

داده خوانده شده يك دنباله بايت از نوع بايت است و ترتيب بايت بايد هنگام ارسال داده ارسال شود. اگر مي خواهيد رشته اي را ارسال يا دريافت كنيد ، بايد رشته را رمزگذاري و رمزگشايي كنيد.

 

همچنين از پريزها براي باز كردن و استفاده از منابع خارجي استفاده مي شود ، بنابراين بستن آنها بسيار مهم است. هنگامي كه اتصال بسته شد ، سرور و مشتري بايد سوكت را ببندند .هرگونه تلاش براي دريافت يا ارسال داده از سوكت در حال حاضر بسته ، خطايي خواهد بود. براي بستن سوكت ، از روش socket.close () استفاده كنيد. توجه داشته باشيد كه شيء سوكت از پروتكل مدير زمينه پشتيباني مي كند ، بنابراين مي توانيد با استفاده از دستور آن را براي اطمينان از بسته بودن آن استفاده كنيد.

مشتري به سرور متصل مي شود - اتصال دهيد

مشتري به همان روش با سرور ارتباط برقرار مي كند ، به جز اينكه مشتري نيازي به اتصال يا گوش دادن ندارد. اين امر به اين دليل است كه مشتري به طور فعال به سرور وصل مي شود و هميشه 1: 1 را با سوكت متصل برقرار مي كند. (البته اين موقعيت مشتري است. از اين گذشته ، سرور نياز به اتصال دارد زيرا مي تواند همزمان در همان پورت به چندين مشتري وصل شود.)

 

اتصال از socket.connect استفاده مي كند () و آرگومان هاي استفاده شده همانند اتصال () هستند. اين روش با برقراري اتصال بدون بازگشت مقدار باز مي گردد. بنابراين مشتري مي تواند از اولين سوكت ايجاد شده براي برقراري ارتباط استفاده كند.

تا كنون نظري ثبت نشده است
ارسال نظر آزاد است، اما اگر قبلا در رویا بلاگ ثبت نام کرده اید می توانید ابتدا وارد شوید.