Python ile Socket Programlama 2
Bugün TCP protokolüyle soket bağlantısı kurmayı inceliyoruz.
UDP ile bağlantı yapıldığında istemci ile sunucu arasında bir bağlantı kurma gereği yoktu. Yayınlar rastgele yapılıyor, sunucu dinliyorsa, gönderilen paketleri yakalayabiliyordu. Datagram adı verilen bu paketlerin yerine ulaşma garantisi yoktu, çünkü denetlenmiyorlardı.
Oysa TCP tipi bağlantılarda istemci ve sunucu arasında karşılıklı bir etkileşim ve iletişim bulunur. Bilgi akışı denetim altındadır. Arada paket kaybı yaşanmaz.
[youtube https://www.youtube.com/watch?v=Eqb69XKucTM&w=560&h=315]
TCP sunucu
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#!/usr/bin/python # -*- encoding: utf-8 -*- #ax-tcp-sunucu.py from socket import * import threading bind_ip = "0.0.0.0" bind_port = 9999 sunucu = socket(AF_INET, SOCK_STREAM) sunucu.bind((bind_ip, bind_port)) sunucu.listen(5) print ("[*] Dinliyor : %s:%d" % (bind_ip, bind_port)) def handle_istemci(istemci_soket): request = istemci_soket.recv(2048) print ("[*] %s alındı" % request) istemci_soket.send("ACK!") istemci_soket.close() while True: istemci, adres = sunucu.accept() print ("[*] %s:%d bağlantısı kabul edildi." % (adres[0], adres[1])) istemci_handler = threading.Thread (target=handle_istemci,args=(istemci,)) istemci_handler.start() |
TCP istemci
1 2 3 4 5 6 7 8 9 10 11 |
#!/usr/bin/python # -*- encoding: utf-8 -*- #ax-tcp-sunucu.py from socket import * hedef_sunucu = "localhost" hedef_port = 9999 istemci = socket(AF_INET,SOCK_STREAM) istemci.connect((hedef_sunucu, hedef_port)) istemci.send("GET / HTTP/1.1rnHost: google.com.trrnrn") response = istemci.recv(4096) print (response) |
Sorularınızı yorum alanından bana iletebilirsiniz.
Beni izlemeye devam edin.
ahmet aksoy