پایتون و شبکه های کامپیوتری
کاربرد برنامه نوسی پایتون برای مهندسین شبکه
پایتون و شبکه های کامپیوتری پایتون دو سطح دسترسی به خدمات شبکه را فراهم می کند. در سطح پایین ، می توانید به پشتیبانی پایه ای سوکت در سیستم عامل دسترسی پیدا کنید ، که به شما امکان می دهد کلاینت ها و سرورها را برای پروتکل های اتصال محور و بدون اتصال پیادهسازی کنید. پایتون همچنین دارای کتابخانه هایی است که دسترسی سطح بالاتر به پروتکل های شبکه خاص در سطح برنامه مانند FTP ، HTTP و غیره را فراهم می کند.
در این مقاله ما در مورد مشهورترین مفهوم در شبکه “برنامه نویسی سوکت “می پردازیم.
سوکت چیست؟
سوکت ها نقاط پایانی یک کانال ارتباطی دو طرفه هستند. آنها ممکن است درون یک فرایند ، بین فرایندهای یک ماشین یا بین فرایندهای ماشین های مختلف در سراسر شبکه ارتباط برقرار کنند.
سوکت ها ممکن است از طریق انواع مختلف کانال اجرا شوند: سوکت های دامنه یونیکس ، TCP ، UDP و غیره. کتابخانه سوکت کلاسهای خاصی را برای رسیدگی به حمل و نقل های رایج و همچنین یک رابط عمومی برای مدیریت بقیه پروتکل ها فراهم می کند.
سوکت ها واژگان خاص خود را دارند:
Sr.No. |
Term & Description |
1 | دامنه(Domain)
خانواده پروتکل هایی که به عنوان مکانیسم حمل و نقل استفاده می شود. این مقادیر ثابت هایی مانند AF_INET ، PF_INET ، PF_UNIX ، PF_X25 و غیره هستند. |
2 | نوع (Type)
نوع ارتباطات بین دو نقطه انتهایی ، به طور معمول SOCK_STREAM برای پروتکل های اتصال گرا و SOCK_DGRAM برای پروتکل های بدون اتصال. |
3 | پروتکل
به طور معمول صفر ، این ممکن است برای شناسایی یک نوع پروتکل در یک دامنه و نوع استفاده شود. |
4 | نام میزبان(Hostname)
شناسه رابط شبکه · A string, which can be a host name, a dotted-quad address, or an IPV6 address in colon (and possibly dot) notation · A string “<broadcast>”, which specifies an INADDR_BROADCAST address. · A zero-length string, which specifies INADDR_ANY, or · An Integer, interpreted as a binary address in host byte order. |
5 | پورت(Port)
هر سرور به مشتریانی که از یک یا چند پورت تماس می گیرند گوش می دهد. پورت ممکن است یک شماره پورت Fixnum ، یک رشته حاوی شماره پورت یا نام یک سرویس باشد. |
پایتون و شبکه های کامپیوتری
ماژول سوکت(socket Module)
برای ایجاد سوکت ، باید از عملکرد() socket.socket موجود در ماژول سوکت ، که دارای نحو عمومی است ، استفاده کنید.
s = socket.socket (socket_family, socket_type, protocol=0)
در اینجا شرح پارامترها آمده است –
- socket_family− This is either AF_UNIX or AF_INET, as explained earlier.
- socket_type− This is either SOCK_STREAM or SOCK_DGRAM.
- protocol− This is usually left out, defaulting to 0.
پس از داشتن سوکت شی ، می توانید از توابع مورد نیاز برای ایجاد برنامه مشتری یا سرور خود استفاده کنید. در زیر لیستی از توابع مورد نیاز آمده است.
انواع روشهای سوکت سرور
Sr.No. |
روش و توضیحات |
1 | s.bind()
This method binds address (hostname, port number pair) to socket. |
2 | s.listen()
This method sets up and start TCP listener. |
3 | s.accept()
This passively accept TCP client connection, waiting until connection arrives (blocking). |
روش های سوکت کلاینت
Sr.No. |
روش و توضیحات |
1 | s.connect()
This method actively initiates TCP server connection |
روشهای سوکت عمومی
Sr.No. | Method & Description |
1 | s.recv()
این روش پیام TCP را دریافت می کند. |
2 | s.send()
این روش پیام TCP را منتقل می کند. |
3 | s.recvfrom()
این روش پیام UDP را دریافت می کند. |
4 | s.sendto()
این روش پیام UDP را منتقل می کند. |
5 | s.close()
این روش سوکت را می بندد. |
6 | socket.gethostname()
نام میزبان را برمی گرداند. |
پایتون و شبکه های کامپیوتری
یک سرور ساده
# This is server.py file( است server.pyاین پرونده ) |
#!/usr/bin/python |
# Import socket module(ماژول سوکت را وارد کنید) |
import socket |
# Create a socket object( یک شی سوکت ایجاد کنید) |
s = socket.socket() |
# Get local machine name(دریافت نام دستگاه محلی) |
host = socket.gethostname() |
# Reserve a port for your service.( رزرو یک پورت) |
port = 12345 |
# Bind to the port(بستن پورت) |
s.bind((host, port)) |
# Now wait for client connection.( منتظر اتصال مشتری باشید.) |
s.listen(5) |
– |
while True: |
# Establish connection with client.(# اکنون منتظر اتصال مشتری باشید.) |
c, addr = s.accept() |
print ‘Got connection from’, addr |
|
c.send(‘Thank you for connecting’) |
|
# Close the connection(بستن اتصال) |
c.close() |
پایتون و شبکه های کامپیوتری
یک کلاینت ساده
بیایید یک برنامه کلاینت بسیار ساده بنویسیم که اتصال به پورت داده شده 12345 و میزبان داده شده را باز کند. ایجاد یک سرویس گیرنده سوکت با استفاده از عملکرد ماژول سوکت پایتون این کار بسیار ساده است.
socket.connect (نام ، پورت) اتصال TCP را به نام میزبان در پورت باز می کند. هنگامی که سوکت را باز کردید ، می توانید مانند هر شی IO از آن بخوانید. بعد از اتمام کار ، به خاطر داشته باشید که همانطور که پرونده را می بندید ، آن را ببندید.کد زیر یک سرویس گیرنده بسیار ساده است که به یک میزبان و پورت متصل می شود ، داده های موجود را از سوکت می خواند و سپس خارج می شود.
# This is client.py file( استclient.py این پرونده) |
#!/usr/bin/python |
# Import socket module(ماژول سوکت را وارد کنید) |
import socket |
# Create a socket object(ایجاد یک شی سوکت) |
s = socket.socket() |
# Get local machine name(دریافت نام دستگاه محلی) |
host = socket.gethostname() |
# Reserve a port for your service.(رزرو یک پورت برای سرویس) |
port = 12345 |
– |
s.connect((host, port)) |
print s.recv(1024) | |
# Close the socket when done(بستن سوکت پس ار اتمام ) |
s.close() |
حالا این server.py را در پس زمینه اجرا کنید و سپس بالای client.py اجرا کنید تا نتیجه را ببینید.
# Following would start a server in background.
$ python server.py &
# Once server is started run client as follows:
$ python client.py
.این نتیجه زیر را ایجاد می کند
Got connection from ('127.0.0.1', 48437)
Thank you for connecting
ماژول های اینترنتی پایتون
پروتکل |
عملکرد مشترک |
شماره پورت |
ماژول پایتون |
HTTP |
Web pages |
80 |
httplib, urllib, xmlrpclib |
NNTP |
Usenet news |
119 |
nntplib |
FTP |
File transfers |
20 |
ftplib, urllib |
SMTP |
Sending email |
25 |
smtplib |
POP3 |
Fetching email |
110 |
poplib |
IMAP4 |
Fetching email |
143 |
imaplib |
Telnet |
Command lines |
23 |
telnetlib |
Gopher |
Document transfers |
70 |
gopherlib, urllib |
این یک شروع سریع با برنامه نویسی سوکت بود. برنامه نویسی سوکت یک دانش گسترده است.
برای به دست آوردن این دانش با دوران آکادمی همراه باشید و در تقویم آموزش دوران آکادمی را دنبال کنید.
دوران آکادمی مجری دورهای تخصصی برنامه نویسی در حوزه زبان Python است . این دوره ها شامل دوره های پایتون
برای برنامه نویسان وب،پایتون برای مهندسین شبکه و پایتون برای تست نفوذ می باشد. جهت اطلاع از دوره های ما به
بخش تقویم مراجعه نمایید
دیدگاهتان را بنویسید