CodeBlanks Logo Icon CodeBlanks

Soket nedir?

  • C kursu
  • İleri seviye
  • Ders 25/83
  • 5 dk

Soket kavramını ve ağ iletişimindeki rolünü öğrenirsin.

Soket nedir?

Soket, süreçler arası veya ağ üzerinden iletişim sağlayan bir üç noktasıdır. POSIX'te soketler de dosya tanıtıcısıdır; read ve write ile çalışırlar.

İki temel türü vardır: SOCK_STREAM (TCP, güvenilir bağlantı) ve SOCK_DGRAM (UDP, bağlantısız veri bloğu). Soketler <sys/socket.h> başlığında tanımlanır. Sunucu socket, bind, listen ve accept adımlarını izler; istemci socket ve connect kullanır.

Soket adresleri

Her soket bir adrese bağlıdır. AF_UNIX yerel dosya yolu, AF_INET ise IPv4 ağı kullanır. Adres yapısı sırasıyla struct sockaddr_un ve struct sockaddr_in'dir.

Bu derste AF_UNIX kullanacağız; ağ bağımlılığı yoktur ve aynı makinede hızlıdır. Soket fonksiyonları adres yapısını struct sockaddr * olarak alır; bu yüzden cast yapman gerekir. memset ile adres yapısını sıfırlamak iyi bir alışkanlıktır.

Uygulama Soket türlerini yazdır

printf ile iki soket türünü her satıra bir tane yazdır: printf("SOCK_STREAM\n"); ve printf("SOCK_DGRAM\n");.

Başlangıç kodu

main.c
#include <stdio.h>
#include <sys/socket.h>

// SOCK_STREAM yazdır
// SOCK_DGRAM yazdır

int main(void) {
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>
#include <sys/socket.h>

int main(void) {
    printf("SOCK_STREAM\n");
    printf("SOCK_DGRAM\n");
    return 0;
}

Beklenen çıktı

SOCK_STREAM
SOCK_DGRAM

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 SOCK_STREAM hangi protokole karşılık gelir?

  • TCP Doğru cevap
  • UDP
  • ICMP
  • ARP

Açıklama: SOCK_STREAM, TCP'nin güvenilir bağlantısına karşılık gelir.

2 Soket türü

Soru
int fd = socket(AF_UNIX, ____, 0);
Cevap
int fd = socket(AF_UNIX, SOCK_STREAM, 0);

Açıklama: SOCK_STREAM güvenilir bağlantı sağlar.

3 Soket türlerini eşle

Kavram Anlamı
SOCK_STREAM TCP güvenilir
SOCK_DGRAM UDP bağlantısız
AF_UNIX Yerel soket
AF_INET IPv4 ağı

İleri seviye bölümündeki tüm dersler