Minitalk
projesi, C programlama dilinde geliştirilmiş bir iletişim uygulamasıdır. Projenin temel amacı, süreçler arası iletişimde sinyal işlemleri kullanarak istemci ve sunucu arasında güvenilir veri iletimini gerçekleştirmektir. Özellikle, veri bütünlüğünün korunması ve veri iletiminin hızlı ve hatasız bir şekilde sağlanması hedeflenir.
-
Projeyi klonlayın:
git clone https://github.com/BoraOmerBoluk/42_Minitalk
-
Minitalk işlevini kullanmak istediğiniz C programınıza ekleyin:
#include "Minitalk.h"
-
Client ve Server uygulamasını sırayla derleyin:
bboluk@bboluk42 Minitalk % make
gcc -Wall -Wextra -Werror server.c -o server gcc -Wall -Wextra -Werror client.c -o client
Not: Bonus dosyaları için ayrıca 'make bonus' komutunu çalıştırmanız gerekmektedir.
-
Server uygulamasını başlatın:
bboluk@bboluk42 Minitalk % ./server
PID: SUNUCU_PID
-
Client uygulamasını kullanarak veri gönderin:
bboluk@bboluk42 Minitalk % ./client SUNUCU_PID* "Merhaba, Minitalk!👋🏻"
Not:
*: SUNUCU_PID kısmına./server
'ı çalıştırdığımızda bize verdiği "PID" numarasını yazmalıyız.
1. Düşük Seviyeli İletişim: Minitalk, süreçler arası iletişimde sinyal işlemleri kullanarak istemci ve sunucu arasında iletişim kurar. Bu, doğrudan veri iletimi ve alımını sağlar.
2. Veri İletim Protokolü: İletilen veri, özel bir protokol üzerinden parçalara bölünür ve sunucuya gönderilir. Bu sayede verinin güvenliği ve bütünlüğü sağlanır.
3. Hata Kontrolü: Sunucu, veriyi alırken hata kontrolü yapar. Bu sayede iletilen verinin bozulup bozulmadığı kontrol edilir ve veri bütünlüğü korunur.
Server
uygulaması başlatıldığında,server
kendi PID'sini görüntüler veclient
ile iletişim için hazır hale gelir.Client
,Server
PID'sini kullanarak iletişim kurar.Client
, iletilmek istenen veriyi özel bir protokol üzerinden parçalara böler veserver
'a gönderir.Server
, iletilen veriyi alır, parçaları birleştirir ve veri bütünlüğünü kontrol eder.- Veri bütünlüğü sağlandıysa,
server
başarılı bir geri dönüş değeri gönderir. Client
, geri dönüş değerini alarak verinin başarıyla iletilip iletilmediğini doğrular.
Eğer bu projeye katkıda bulunmak isterseniz, fork ve pull request oluşturursanız sevinirim. Repository güncellenmeden önce gerekli testleri yaptığınızdan emin olunuz 😃.
Bu proje, 42 School tarafından verilen görevlerden biridir. Proje ile ilgili daha fazla bilgi ve detaylı açıklamalar için klasör içindeki tr.subject.pdf dosyasını inceleyebilirsiniz.