Python Socket Programlama // Ar-Ge kulübü

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

aefrgn

Üye
10 Ara 2017
153
0
Ötüken
Merhaba dostlar, bugün sizlere Python Socket Programlama hakkında bilgiler verip elimden geldiği kadar yardımcı olmaya çalışacağım.




Önce Socket Programlama nedir bundan bahsedeyim.

İki cihaz arasındaki iletişimi sağlamak için kullanılan bir yapı diyebilirim.IP ve Port etkileşimiyle kurulur ve iki cihaz arasında data paylaşımı,aktarımı yapmamıza olanak sağlar.

Şimdi Ne işimize yarayacağından bahsedeyim.

Kendi elektronik cihazlarınızdan bilgisayar,tablet vs ile uzaktaki herhangi bir elektronik cihazınızı kontrol etmenizi transfer yapmanızı saglar.FTP ve SSH uygulamalarıda socket temelli uygulamalardır.

Programlama aşamasından bahsedeyim.

Bağlantı gerçekleşecek iki cihazında belirgin bir IP almış olması lazım veya 'sunucu' olarak adlandırdığımız tarafın belirgin bir IP adresine sahip olması gerekir.Sunucu açık değilken bağlantı isteği gönderirseniz hata ile karşılaşırız.

Programlamaya başlayalım.

Önce kütüphanemizi projemize dahil etmemiz gerekiyor.
Kod:
import socket

Bağlantıyı tanımlamak için Ip port tanımlamamız gerekicek.Ben localhost umun ip sini yazıyorum siz değiştirebilirsiniz.
Kod:
host = "127.0.0.1"
port = 1234
buf = 1024
calistir = (host,port)
Buf ne diye soracak olursanız gelen-giden verilerin boyutudur.1Kb olarak tanımladım ben.Yapmak istediğiniz işleme göre değiştirebilirsiniz.

Sırada en önemli yer olan socketimizi tanımlamamız gerekicek.
Kod:
bagla = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
bagla.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
bagla.bind(calistir)
bagla.listen(2)
Socketimizi bagla değişkeni üzerine tanımladık.İki argüman kullandım.İlki AF_INET dir.kullanmamızın sebebi IPv4 yapısında bir IP kullanıyor olmamız.IPv6 kullananlar için IF_INET6'da kullanılabilir.

Şimdi gelen bağlantıyı kabul edelim.
Kod:
sunucu,adres = bagla.accept()
Ayrıca sunucumuzu tanımlayalım ve IP adresini aldık.

bagla.accept() fonksiyonunu çalıştırdığınız anda sunucunuz artık çalışmaya ve portu dinlemeye başlamıştır.
Veri gönderip alma işlemlerine geçelim.

Veri göndermek için send() fonksiyonu veri almak içinde recv() fonksiyonu kullanılır.
recv() fonksiyonunu kullanabilmek için bir veri boyutu girmelisiniz.Bunuda yukarıda tanımladığımız buf değişkeni ile tamamlayabiliriz.

Kod:
sunucu.send("Baglanti Basarili..")
veri = sunucu.recv(buf)
print veri

istemciden gelen veriyi data değişkenine aldık ayrıca print ile bu değişkeni ekrana yazdırdık.
Sunucu ve baglantıyı kapayalım.
Kod:
sunucu.close()
bagla.close()



 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.