• Oturum aç
Tech News, Magazine & Review WordPress Theme 2017
  • Haberler
  • Kategoriler
    • Bilim
    • Teknoloji
    • Girişimcilik
    • Kripto Para
    • Oyun
    • Yazılım
    • Otomotiv
    • Kültür Sanat
    • Tasarım
    • Savunma Sanayi
    • Siber Güvenlik
  • Etkinlikler
  • Mühendislikler
  • Mühendisin Köşesi
Sonuç yok
Tüm Sonuçları Görüntüle
MühendisBilir
Sonuç yok
Tüm Sonuçları Görüntüle

Özgür Yazılım Kış Kampı- Soketler

Saniye Nur Çintimur Saniye Nur Çintimur
06/02/2020
Okuma Zamanı: 4 dk.
149 1
0
Share on FacebookShare on Twitter

Linux Sistem Programlamada kullanacağımız soketler nedir ne işe yarar ?

İLGİLİ İÇERİKLER

Rubik Küpünü Ve Diğer Sorunları Adım Adım Çözmek İçin Derin Bir Öğrenme Tekniği

Cumhuriyet Altınlarının Darphane Çıkışlı Olup Olmadığını ASELSAN Tespit Edecek

Facebook, Haber Sektörüne 1 Milyar Dolar Yatırım Yapacak

Önce uygulama katmanındaki ağ uygulamaları birbirleriyle nasıl haberleşirler ona bakalım.Birbiriyle haberleşen sistemlere aslında uygulamaların haberleşmesi değil proseslerin haberleşmesi diyoruz.

Proses ise işlem diyebiliriz kısaca fakat şöyle desek daha dogru olur :  Herhangi bir uç sistemde çalışan programların her biri bir prosestir,bir işlemdir.

Mesela benim bilgisayarımda iki işlem birbiriyle haberleşecekse buna işlemler arası haberleşme(inter process) deniyor, bu yöntemle haberleşiyorlar.

(Bu haberleşme yöntemi işletim sistemi tarafından tasarlanmıştır.)

Farklı son sistemlerdeki farklı hostlardaki prosesler birbirleriyle haberleşecekse bunlar birbirleriyle mesaj alışverişi yaparlar.Üretilen mesajları  ağ üzerinde taşırlar.

Prosesleri gruplandıracak olursak ,

  • Client prosess
  • Server prosess

Haberleşmeyi başlatan proseslere istemci prosesleri diyoruz.

Kendisiyle iletim kurulmasını bekleyen proseslere server proses sunucu proses diyoruz.

Prosesler birbirleriyle haberleşiyorlar ama mesajları iletme işiyle ilgilenmiyorlar.Mesaj iletme işiyle bir alt katmandaki transport katmanı ilgileniyor.Bu mesajları iletim transport katmanına vermeleri lazım peki nerden  verirler bu katmana mesajları , soket dediğimiz yazılımlar üzerinden verirler.Yani soketleri bir kapı olarak düşünebiliriz.Uygulalama katmanı ile transport katmanı arasındaki bir kapıdır bu soket.

(soketi arayüz olarakda düşünebiliriz. Bu arayüze de API deniyor. )

Ağ uygulamalarının oluşturuldugu programlama arayüzü=soket

(Bu soketler üzerinden dogru uygulamaya dogru mesajların gittiğini sağlarız .)

Soket kullanımı içinde uygulama adresi tek başına yeterli değildir, Ağda her uygulamanın bir numarası vardır ve bu numaraya port numarası denir.

Örneğin ben belirli bir yerdeki web sunucusuna http mesajı gönderecem, bunun için hem IP adresini hem port numarasını göndermem gerekir.

Portlara genel olarak iana.org dan bakabilirsiniz.

Nedir IANA ==> Internet Assigned Numbers Authority ==> İnternette atanan numaraların otoritesi gibi çevrilebilir.

Bütün port numaralarının hangi servislere ait olduguna dair bir liste tutar.

struct sockaddr : Bu veri yapıs pek çok türde soket için soket adres bilgisini barındırır.
sa_family pek çok de erden birini alabilir. Ama bu anlatımda sadece AF_INET (ARPA Internet protocols)
kullanılacaktır.
AF_UNIX (UNIX internal protocols)
AF_INET (ARPA Internet protocols)
AF_ISO (ISO protocols)
AF_NS (Xerox Network Systems protocols)
AF_IMPLINK (IMP “host at IMP” link layer)
sa_data ise soketle ilgili hedef adres ve port numaras bilgilerini barındırır.
struct sockaddr ile başa çıkabilmek için buna paralel bir yapı olarak struct sockaddr_in tasarlanmıştır.

 

 

 

Şimdi bir örnek üzerinden başlayalım :

(önce bir udp sunucu yazıyoruz.)

 

# ! /usr/bin/python                    // linux üzerinde yazdım kodu bu kısım  python programına erişim adresi

# -*- encoding: utf-8 -*-

#ax-udp-sunucu.py

from socket import *    //socket modülünün içindeki bütün fonksiyonları import et .

sunucuAd= ‘hostname’

// burada anlaşılsın diye böyle yazdım böyle bir sunucu adı olmaz .bunun yerine  ‘localhsost ’ , yada ‘127.0.0.0’ yada boş bırakın farketmez.

sunucuPort=12345

sunucuSocket=socket(AF_INET , SOCK_DGRAM)  // nesneyi açtık burada AF_INET internet bağlantısı

sunucuSocket.bind((sunucuAd, sunucuPort )) // şimdi bir bağlantı kuruyoruz bind ile

print (‘Sunucu veri almaya hazırdır. ’)

while 1 :

mesaj, istemciAdres=sunucuSocket.recvfrom(4096)  // 4096 buffer boyutu, yani karşıdan alınacak bilgi miktarını  belirten rakam

if mesaj == ‘axson’ : // iletişim kesmek için kullanacagız. Sunucuyu durdurmak için

break

yeniMesaj=mesaj.upper()   // büyük harfe dönüştür

sunucuSocket.sendto(yeniMesaj,istemciAdres)

sunucuSocket.close() // döngü dışına çıktıgımızda sunucuyu kapat mesajı

print(‘Sunucu kapandı. ’)

 

Şimdi udp istemci yazıyoruz :

#!/usr/bin/python

# -*- encoding: utf-8 -*-

#ax-udp-istemci.py

from socket import *

sunucuAd = ‘localhost’

sunucuPort = 12345

istemciSocket = socket(AF_INET, SOCK_DGRAM) #datagram   // istemci soketini tanıma

mesaj = raw_input(‘Küçük harfle bir cümle yaz:’)

istemciSocket.sendto(mesaj, (sunucuAd, sunucuPort))

yeniMesaj, sunucuAdres = istemciSocket.recvfrom(4096)

print (yeniMesaj)  // burada mesaj sunucuya ulaştıysa bize büyük harf dönmesi lazım

 

Termianalde çalıştırdıgınızda aşagıdaki gibi hatalar alabilirsiniz sorun yok arayüzde çalıştırmaya çalışın, yani direk dosyadan açık hata gidecektir :

Direk buradan çalıştırın :

İstemciyi çalıştır :

(Arayüzdende çalışabildiğini görmeniz için bunu pycharmdan çalıştırdım.)

Gördüğünüz üzere sunucu ve istemciyi haberleştirdik.İstediğimiz cevabıda aldık.

Şimdi son olarak axson yazalım, yazdıgımız koda göre sunucuyu durdurmalı bu ifade :

 

Yanda açık olan sunucu kapandı .

 

 

Bu yazımızda udp server ve istemci tanımladık , haberleştirdik.Bir sonraki yazımızda tcp server ve istemci haberleştireceğiz. Beklemede kalın ..

 

 

 

Python ile Socket Programlama 1

Soket Programlama(Socket Programming)

iana.org

 

 

İçeriklerden ilk siz haberdar olmak ister misiniz?

Abonlikten Çık
Saniye Nur Çintimur

Saniye Nur Çintimur

Adli Bilişim Mühendisi ,Siber Güvenlik Araştırmacısı, Offensive Security ilgili https://www.hackthebox.eu/home/users/profile/240523 https://tryhackme.com/p/sny @HackTheBox @PriviaHub @TryHackMe @CTFPlayer

İlişkili Gönderiler

Rubik Küpünü Ve Diğer Sorunları Adım Adım Çözmek İçin Derin Bir Öğrenme Tekniği

Rubik Küpünü Ve Diğer Sorunları Adım Adım Çözmek İçin Derin Bir Öğrenme Tekniği

28/02/2021
1.5k
cumhuriyet-altinlarinin-darphane-cikisli-olup-olmadigini-aselsan-tespit-edecek

Cumhuriyet Altınlarının Darphane Çıkışlı Olup Olmadığını ASELSAN Tespit Edecek

28/02/2021
1.5k
facebook-haber-sektorune-1-milyar-dolar-yatirim-yapacak

Facebook, Haber Sektörüne 1 Milyar Dolar Yatırım Yapacak

27/02/2021
1.5k
avrupada-2030a-kadar-pet-siseler-yuzde-100-geri-donusumde-olacak

Avrupa’da 2030’a Kadar Pet Şişeler Yüzde 100 Geri Dönüşümde Olacak

26/02/2021
1.5k
Tartışmaya katılmak için lütfenGiriş Yapın

Trend.

Mevcut İçerik Yok

Mühendisin Köşesi.

Çevre Mühendisliği Bölümü Nedir?

Çevre Mühendisliği Bölümü Nedir?

10/11/2020
1.5k

Gıda Mühendisliği Nedir ve İş İmkanları Nelerdir?

19/07/2020
1.5k
Mekatronik Mühendisliği Bölümü Nedir?

Mekatronik Mühendisliği Bölümü Nedir?

10/11/2020
1.5k
  • Gizlilik Politikası
  • Hakkımızda
  • Yazarlar
  • Yazarımız Ol
  • Sosyal Medya Sponsorluğu
  • İletişim

© 2021 Muhendis Bilir - Powered by

Sonuç yok
Tüm Sonuçları Görüntüle
  • Haberler
  • Etkinlikler
  • Mühendislikler
  • Mühendisin Köşesi
  • Kategoriler
    • Bilim
    • Girişimcilik
    • Kültür Sanat
    • Otomotiv
    • Savunma Sanayi
    • Siber Güvenlik
    • Tasarım
    • Teknoloji
  • Sosyal Medya Sponsorluğu
  • Yazarımız Ol
  • Oturum aç

© 2021 Muhendis Bilir - Powered by

Tekrar hoşgeldiniz!

Google ile giriş yap
Veya

Hesaba giriş yap

Şifremi unuttum

Yeni hesap oluştur

Sign Up with Google
Veya

Kayıt olmak için formu doldurun

Tüm Alanlar Zorunludur Oturum aç

Şifrenizi Geri Alın

Şifreyi sıfırlamak için ayrıntı girin

Oturum aç

Yeni Oynatma Listesi Ekle

Veri politikasındaki amaçlarla sınırlı ve mevzuata uygun şekilde çerez konumlandırmaktayız. Detaylar için Gizlilik Politika'mızı inceleyebilirsiniz. .