C Programlama

C Programlamalı POSIX Soketi

C Programlamalı POSIX Soketi

Bir POSIX Soketi veya basitçe bir Soket, iletişim uç noktası olarak tanımlanır. Örneğin, iki taraf, A ve B, birbirleriyle iletişim kurmayı planlıyorsa, bu tarafların her ikisinin de kendi uç noktaları arasında bir bağlantı kurması gerekecektir. Bir soket, iletişim kuran taraflara, mesajların içinden geçtiği bir ağ geçidi sağlar. İstemci ve sunucu açısından konuşursak, sunucu tarafı soketin işi gelen bağlantıları dinlemek olacaktır, istemci tarafı soket ise sunucu tarafı soketine bağlanmaktan sorumlu olacaktır. Bu makale, C programlama ile POSIX soketi kavramını çok daha net hale getirmeyi amaçlamaktadır.

Linux Mint 20'de Posix Soketini C Programlama ile Kullanma Örneği

Bu bölümde size sunulan örnek, bir istemci ve bir sunucu arasındaki etkileşimi gösterecektir. İstemci ve sunucu, bilgisayar dünyasında istemci/sunucu modelinin iki ana varlığıdır. Örneğimizde, Linux Mint 20'de C programlama ile POSIX Soketini kullanırken hem istemci hem de sunucu birbirine mesaj gönderiyor ve alıyor olacak. Kodun anlaşılmasına açıklık getirmek için, istemci tarafı kodunu ve sunucu tarafı kodunu ayırdık ve aşağıda her ikisini de size ayrı ayrı açıklayacağız.

Sunucu Tarafı Kodu

Sunucu tarafı kodu için, Linux Mint 20 sistemimizin Ana Dizininde boş bir belge oluşturduk ve onu sunucu olarak adlandırdık.c. Bu boş belgede, aşağıdaki üç resimde gösterilen kod parçacıklarını yazmanız gerekir:

Yukarıdaki resimlerde gösterilen kod uzun görünebilir ancak son derece kolay bir şekilde anlamaya çalışalım. Her şeyden önce, bir soket oluşturduk ve bizim durumumuzda 8080 olan istenen port numarasına bağladık. Ardından, istemcilerden gelen tüm bağlantıları aramak için bir dinleme işlevi yazdık. Temel olarak, istemci, bu dinleme işlevinin varlığı nedeniyle sunucuya bağlanmayı başarır. Ve bu bağlantı kurulduğunda, sunucunun tamamı istemciye veri gönderip alacak şekilde ayarlanmıştır.

Okuma ve gönderme işlevleri, sırasıyla istemcilere mesaj alma ve gönderme amaçlarına hizmet eder. Kodumuzda istemcimize göndermeyi düşündüğümüz varsayılan bir mesaj tanımladık ve bu “Sunucudan Merhaba”. Bu mesajı istemciye gönderdikten sonra istemci tarafında, sunucu tarafında ise “Merhaba mesaj gönderildi” mesajı görüntülenecektir. Bu tamamen bizim sunucu tarafı kodumuzla ilgili.

İstemci Tarafı Kodu

Şimdi, istemci tarafı kodu için, yine Linux Mint 20 sistemimizin Ana Dizininde boş bir belge oluşturduk ve onu istemci olarak adlandırdık.c. Bu boş belgede, aşağıdaki iki resimde gösterilen kod parçacıklarını yazmanız gerekir:

Yukarıdaki resimlerde gösterilen istemci tarafı kodunda, sunucu tarafı kodu için yaptığımız gibi bir soket oluşturduk. Ardından, belirtilen bağlantı noktası üzerinden sunucuyla bağlantı kurmaya çalışacak bir bağlantı işlevi vardır. Ve bu bağlantı sunucu tarafından kabul edildiğinde, istemci ve sunucu, birbirlerine mesaj gönderip almaya ayarlanacaktır.

Yine, sunucu tarafı kodu gibi, gönderme ve okuma işlevleri sırasıyla sunucudan mesaj göndermek ve almak için vardır. Ayrıca, sunucuya göndermek istediğimiz varsayılan bir mesajdan bahsetmiştik ve bu “Müşteriden Merhaba”. Bu mesajı sunucuya gönderdikten sonra, sunucu tarafında bu mesaj, istemci tarafında ise “Merhaba mesaj gönderildi” mesajı görüntülenecektir. Bu da bizi müşteri tarafı kodumuzun açıklamasının sonuna getiriyor.

İstemci ve Sunucu Tarafı Kodlarını Derleme ve Çalıştırma

Açıkçası, bu programları yazdıktan sonra hem istemci tarafı hem de sunucu tarafı dosyalarımızı kaydedeceğiz, sonra hepimiz bu kodları derlemek ve çalıştırmak için hazır olacağız. Böylece yeni oluşturduğumuz istemci ve sunucu arasındaki etkileşimi görselleştirebileceğiz. Bu amaca ulaşmak için iki ayrı program çalıştırmamız gerektiğinden iki farklı terminal başlatmamız gerekiyor. Bir terminal, sunucu tarafı kodunu çalıştırmaya, diğeri ise istemci tarafı koduna tahsis edilecektir.

Bu yüzden sunucu tarafı kodumuzu derlemek için ilk terminalde aşağıdaki komutu uygulayacağız:

$ gcc sunucusu.c-o sunucusu

Bu komutu çalıştırdıktan sonra, sunucu tarafı kodunuzda herhangi bir hata olmayacaksa, terminalde hiçbir şey görüntülenmeyecek ve bu da başarılı bir derlemenin göstergesi olacaktır.

Aynı şekilde, istemci tarafı kodunu ikinci terminalde çalıştırarak aşağıda gösterilen komutla derleyeceğiz:

$ gcc istemcisi.c -o istemcisi

Her iki kod da derlendikten sonra teker teker çalıştıracağız. Ancak, bağlantı isteklerini dinlemesi gerektiği için önce sunucu tarafı kodunu çalıştırmalıyız. Sunucu tarafı kodu aşağıdaki komutla çalıştırılabilir:

$ ./sunucu

Sunucu tarafı kodunu çalıştırdıktan sonra, istemci tarafı kodunu aşağıda gösterilen komutla çalıştırabiliriz:

$ ./istemci

Hem istemci hem de sunucu çalışmaya başladığında, her iki terminalde de aşağıdaki resimlerde gösterilen çıktılara şahit olacaksınız:

Sonuç

Umarım bu yazıda sizinle paylaşılan örneği inceledikten sonra, bir istemci ve sunucu arasında veri alıp göndermek için POSIX Soketlerini verimli bir şekilde kullanabileceksiniz. Bu örnek, C programlama ile Posix soketlerinin yalnızca temel bir gösterimidir, ancak bu programları gereksinimlerinize göre daha karmaşık hale de getirebilirsiniz.

En İyi Oculus Uygulama Laboratuvarı Oyunları
Oculus başlık sahibiyseniz, yandan yükleme hakkında bilgi sahibi olmalısınız. Sideloading, kulaklığınıza mağaza dışı içerik yükleme işlemidir. SideQue...
Ubuntu'da Oynanacak En İyi 10 Oyun
Windows platformu, günümüzde doğal olarak Windows'u desteklemek için geliştirilen oyunların büyük bir yüzdesi nedeniyle oyun oynamak için hakim platfo...
Linux için En İyi 5 Arcade Oyunu
Günümüzde bilgisayarlar oyun oynamak için kullanılan ciddi makinelerdir. Yeni yüksek puanı alamazsan, ne demek istediğimi anlayacaksın. Bu yazıda, bug...