مقدمة إلى برمجة الشبكات باستخدام بايثون
تتضمن برمجة الشبكات كتابة برامج تتواصل عبر شبكة. تجعل لغة بايثون، بفضل مجموعة مكتباتها الغنية، من السهل نسبيًا تطوير تطبيقات الشبكات. تقدم هذه المقالة مقدمة لبرمجة الشبكات باستخدام بايثون، وتغطي المفاهيم الأساسية وتقدم أمثلة لمساعدتك على البدء.
إعداد البيئة
قبل الخوض في برمجة الشبكات، تأكد من تثبيت Python. ستحتاج أيضًا إلى مكتبة `socket`، المضمنة مع مكتبة Python القياسية، لذا لا يلزمك تثبيت إضافي.
فهم المقابس
المقبس هو نقطة نهاية لإرسال أو استقبال البيانات عبر الشبكة. توفر مكتبة `socket` في Python واجهة للاتصالات الشبكية باستخدام المقابس.
إنشاء خادم TCP بسيط
فيما يلي مثال لخادم TCP أساسي يستمع إلى الاتصالات الواردة ويتعامل معها:
import socket
def start_server(host='localhost', port=12345):
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((host, port))
server_socket.listen(1)
print(f'Server listening on {host}:{port}')
while True:
client_socket, address = server_socket.accept()
print(f'Connection from {address}')
client_socket.sendall(b'Hello, client!')
client_socket.close()
if __name__ == "__main__":
start_server()
إنشاء عميل TCP بسيط
فيما يلي مثال لعميل يتصل بالخادم ويتلقى رسالة:
import socket
def connect_to_server(host='localhost', port=12345):
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((host, port))
message = client_socket.recv(1024)
print('Received:', message.decode())
client_socket.close()
if __name__ == "__main__":
connect_to_server()
فهم UDP
UDP (بروتوكول بيانات المستخدم) هو بروتوكول آخر يستخدم في الاتصالات الشبكية. وعلى عكس TCP، لا يضمن UDP التسليم أو الطلب أو التحقق من الأخطاء. وفيما يلي مثال أساسي لاتصالات UDP:
خادم UDP
import socket
def start_udp_server(host='localhost', port=12345):
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_socket.bind((host, port))
print(f'UDP server listening on {host}:{port}')
while True:
message, address = server_socket.recvfrom(1024)
print(f'Received message from {address}: {message.decode()}')
server_socket.sendto(b'Hello, UDP client!', address)
if __name__ == "__main__":
start_udp_server()
عميل UDP
import socket
def send_udp_message(host='localhost', port=12345):
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
client_socket.sendto(b'Hello, UDP server!', (host, port))
message, _ = client_socket.recvfrom(1024)
print('Received:', message.decode())
client_socket.close()
if __name__ == "__main__":
send_udp_message()
خاتمة
توفر مكتبة `socket` الخاصة بـ Python أساسًا قويًا لبرمجة الشبكات، مما يسمح لك بإنشاء تطبيقات TCP وUDP. من خلال فهم عمليات وبروتوكولات socket الأساسية، يمكنك إنشاء مجموعة متنوعة من التطبيقات والخدمات المتصلة بالشبكة. استمر في استكشاف قدرات الشبكة الخاصة بـ Python لتطوير حلول شبكات أكثر تطورًا وموثوقية.