برنامه نویسی سوکت در پایتون قسمت دوم

امیرحسین تنگسیری نژاد هستم با Part دوم دوره آموزشی برنامه نویسی سوکت در پایتون

ساخت یک Client

کارمان را با ساخت یک سوکت با استفاده از تابع socket() که در پارت قبل یادگرفتیم شروع میکنیم

در واقع Syntax نوشتاری یک سوکت در Python به شکل زیر میباشد

s = socket.socket (Socket_Family, Socket_Type, Protocol )

خب توضیحات کلمات بالا:

Socket_Family:

نوع socket و پروتکل مد نظر را تعیین می کند که از کدام خانواده باشد:

AF_INET6: IPv6

AF_INET: IPv4

Socket_Type:

نوع اتصال، استفاده از پروتکل های TCP و یا UDP که مقدار های SOCK_STREAM و SOCK_DGRAM می باشد

SOCK_STREAM: TCP

SOCK_DGRAM: UDP

نکته: مقدار های دیگری همچون

SOCK_RAW

SOCK_RDM

SOCK_SEQPACKET

را نیز می تواند داشته باشد که فعلا مورد بحث ما نیستند و فقد از STREAM و DGRAM استفاده خواهیم کرد

Protocol:

پروتکل مد نظر که Default مقدار 0 را دارد

TCP:

مخفف Transmission Control Protocol پروتکلی است که با پروتکل IP کار می کند و نحوه انتقال داده های بین کامپیوتر ها را تعیین می سازد و در Transport-Layer استاندارد OSI و TCP/IP قرار دارد

UDP:

مخفف User DataGram Protocol می باشد که همانند پروتکل TCP است ولی فرق آن این است که سلامت ارسال بسته ها و دارا بودن خطا در آن ها تضمین نمیکند این مکانیزمش موجب بالا بودن سرعت شده است


نحوه ایجاد یک socket به عنوان کلاینت به منظور ارسال یک TCP Connection به سمت سرور را باهم پیش میبریم:

import socket 

فراخانی ماژول

socket HOST = '127.0.0.1'  # The server's hostname or IP address
PORT = 65432        # The port used by the server

ایجاد دو متغیر که حاوی IP Address و Port سرور می باشند را ایجاد کرده ایم و به آنها مقدار دادیم

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

ایجاد یک TCP Connection

s.connect((HOST , PORT))

و در اخر با استفاده از تابع connect به سمت سرور این Connection را ارسال خواهیم کرد

کد ما به شکل زیر می باشد

import socket
HOST = '127.0.0.1'  # The server's hostname or IP address
PORT = 65432        # The port used by the server
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.connect((HOST, PORT))

خب به صورت کامل بخوام کد بالارو توضیح دهم

ما با استفاده از ماژول Socket در Python یک TCP Connection به سمت Host و Port مد نظرمان که Port برابر با 65432 می باشد و Host برابر با localhost می باشد ارسال کرده اییم و درخواست اتصال به این Port را داریم دراصل ما یک Client در سمت خود ایجاد کرده اییم

کمی کدمان را توسعه دهیم

چطور مقدار Host و Port را از سمت کلاینت درخواست کنیم؟!

خب کافیست ما در متغییر ها Host و Port به جای دادن یک Value ( مقدار ) مد نظر، آن Value را از فرد اجرا کننده Script درخواست کنیم


import socket
try:
    HOST = input(&quotPlease enter the IP address: &quot)   # The server's hostname or IP address
    PORT = input(&quotPlease enter the Port number: &quot) # The port used by the server
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
        s.connect((HOST, PORT))
except:
    print (&quotNo connection established ! &quot)


خب حالا کدمان را اجرا میکنیم و خروجی به شکل زیر دریافت میکنیم که از ما درخواست ورودی های IP Address و Port Number را دارد که به ترتیب وارد میکنیم و اگر اتصال برقرار نشود به ما error دهد


پایان پارت دوم

نویسنده: امیرحسین تنگسیری نژاد

کانال شخصی من در تلگرام:

@AmirHoseinTangsiriNET