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.