Computer Engineer @XON AI & ML & LLM Open Source /#linux
18.07.2013
Share:
C Socket Programlama - Client / Server Uygulaması
Bu yazımızda C programlama dili ile Linux üzerinde, örnek olması açısından iki uygulamanın haberleşmesini sağlayacağız. Socket, basitçe iki prosesin TCP/IP protokolü üzerinden haberleşmesi için açılan kapı olarak tanımlayabiliriz. Network üzerinde veri aktarımı için öncelikle socket() metoduyla bir socket açmamız, bu sockete de bind() metodu ile bir port numarası atamalıyız. Socketler listen() çağrısıyla bağlantıları dinler, accept() metoduyla bağlantıları kabul eder. Socketler connect() çağrısı ile belirtilen adrese bağlantı sağlar. Socketler send() metoduyla veri gönderir, recv() metoduyla veri alır.
Şimdi basit olarak clientın servera bağlanıp bir mesaj aldığını kurgulayalım. Server için;
socket() ile bir socket oluşturulacak
bind() ile sockete bir port bağlanacak
listen() ile bağlanan port dinlenecek
accept() ile varsa bağlantı kabul edilecek
send() ile kabul edilen bağlantıya veri gönderilecek
close() ile kabul edilen bağlantı kapatılacak.
Client için;
socket() ile bir socket oluşturulacak
connect() ile belirtilen adrese bağlantı isteği gönderecek ve bağlanacak
recv() ile bağlandığı adresten veri alacak.
Örnek uygulamada, client server’a bağlandığı zaman server client’a “Hello Client!” mesajı gönderecek ve client bu mesajı alacaktır.
Server.c ve client.c dosyaları derlendikten sonra ilgili dizinde ./server komutu ile server uygulaması başlatılır, ./client 127.0.0.1 komutu ile client uygulaması başlatılır. Örnek uygulamada port numarası olarak 7841 verdik. Tabi bu komutlar client ve server uygulamalarının aynı bilgisayar üzerinde koştuğu durumda geçerli.