Python Ağ Programlamasına Giriş

Ağ programlama, bir ağ üzerinden iletişim kuran yazılım yazmayı içerir. Zengin kütüphaneleriyle Python, ağ uygulamaları geliştirmeyi nispeten basit hale getirir. Bu makale, Python ağ programlamaya giriş niteliğinde olup temel kavramları ele alır ve başlamanız için örnekler sunar.

Ortamın Kurulması

Ağ programlamaya dalmadan önce Python'un yüklü olduğundan emin olun. Ayrıca Python'un standart kütüphanesine dahil olan `socket` kütüphanesine de ihtiyacınız olacak, bu yüzden ek bir kurulum gerekmiyor.

Soketleri Anlamak

Soket, bir ağ üzerinden veri göndermek veya almak için kullanılan bir uç noktadır. Python'un `socket` kütüphanesi, soketleri kullanarak ağ iletişimi için bir arayüz sağlar.

Basit Bir TCP Sunucusu Oluşturma

Gelen bağlantıları dinleyen ve bunları işleyen temel bir TCP sunucusuna örnek aşağıda verilmiştir:

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()

Basit Bir TCP İstemcisi Oluşturma

İşte sunucuya bağlanan ve bir mesaj alan bir istemcinin örneği:

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'yi anlamak

UDP (Kullanıcı Datagram Protokolü), ağ iletişimi için kullanılan başka bir protokoldür. TCP'nin aksine, UDP teslimatı, siparişi veya hata denetimini garanti etmez. İşte UDP iletişiminin temel bir örneği:

UDP Sunucusu

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 İstemcisi

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()

Çözüm

Python'un `socket` kütüphanesi, hem TCP hem de UDP uygulamaları oluşturmanıza olanak tanıyan ağ programlama için sağlam bir temel sağlar. Temel soket işlemlerini ve protokollerini anlayarak, çeşitli ağ uygulamaları ve hizmetleri oluşturabilirsiniz. Daha sofistike ve güvenilir ağ çözümleri geliştirmek için Python'un ağ yeteneklerini keşfetmeye devam edin.