0Pricing
C Academy · Ders

Soketlere Genel Bakış

Ağ iletişimi temelleri

Soketlere Genel Bakış, CoddyKit'te ücretsiz bir C Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C Academy kursu toplamda 4 dersten oluşur.

Soket Nedir

Soket, ağ iletişimi için bir uç noktadır. POSIX sistemlerinde, iki programın ağ veya aynı makine üzerinden veri alışverişi yapmasını sağlayan, üzerinden okuma ve yazma yapabileceğiniz bir dosya tanımlayıcısıdır.

İstemci-Sunucu Modeli

Ağ uygulamalarının çoğu istemci-sunucu modelini kullanır:

  • Sunucu bir adrese bağlanır ve bağlantıları bekler
  • İstemci sunucuya bağlantı başlatır

Bağlantı kurulduğunda her iki taraf da veri gönderip alabilir.

TCP ve UDP

İki temel aktarım protokolü vardır:

  • TCP (SOCK_STREAM): güvenilir, sıralı ve bağlantı tabanlı
  • UDP (SOCK_DGRAM): hızlı, bağlantısız; paketler kaybolabilir veya sıraları değişebilir

Doğruluk için TCP'yi, düşük gecikmeli akış için UDP'yi kullanın.

Soket Oluşturma

socket() çağrısı bir dosya tanımlayıcısı döndürür. Bağımsız değişkenler şunlardır: adres ailesi (IPv4 için AF_INET), tür (TCP için SOCK_STREAM) ve protokol (varsayılan için 0).

/* Conceptual: sockets need a network environment to run */
#include <sys/socket.h>
#include <netinet/in.h>

int create_tcp_socket(void) {
    int fd = socket(AF_INET, SOCK_STREAM, 0);
    /* fd < 0 means error; check with perror */
    return fd;
}

Soket Adresi Yapıları

Bir IPv4 adresi; aileyi, bağlantı noktasını ve IP adresini içeren struct sockaddr_in ile tanımlanır. İşlevler genel bir struct sockaddr * alır; bu nedenle tür dönüştürmesi yaparsınız.

#include <netinet/in.h>

void fill_addr(struct sockaddr_in *addr, unsigned short port) {
    addr->sin_family = AF_INET;
    addr->sin_port = htons(port);      /* host to network short */
    addr->sin_addr.s_addr = INADDR_ANY; /* all interfaces */
}

Bayt Sırası Önemlidir

Ağlar büyük uçlu biçimi (ağ bayt sırasını) kullanır. Şunlarla dönüştürün:

  • htons / htonl ana bilgisayardan ağa (kısa/uzun)
  • ntohs / ntohl ağdan ana bilgisayara

Bağlantı noktalarını ve adresleri her zaman dönüştürün; aksi hâlde yanlış yere bağlanırsınız.

IP Adresi Dönüştürme

inet_pton, "127.0.0.1" gibi bir metin IP adresini sin_addr içinde saklanan ikili biçime dönüştürür; inet_ntop ise yazdırmak üzere tersini yapar.

#include <arpa/inet.h>
#include <netinet/in.h>

int set_ip(struct sockaddr_in *addr, const char *ip) {
    return inet_pton(AF_INET, ip, &addr->sin_addr); /* returns 1 on success */
}

Sunucu Çağrı Sırası

Bir TCP sunucusu genellikle şu çağrıları sırayla yapar:

  • socket() oluşturma
  • bind() bir adrese ve bağlantı noktasına bağlanma
  • listen() pasif olarak işaretleme
  • accept() bir bağlantı alma

İstemci Çağrı Sırası

Bir TCP istemcisi daha basittir:

  • socket() oluşturma
  • connect() sunucunun adresine bağlantı başlatma

Ardından aynı tanımlayıcı üzerinden send ve recv kullanabilir.

Gönderme ve Alma

send() ve recv() (veya genel amaçlı write() ve read()) kullanın. Her ikisi de istenenden daha az bayt aktarabilir; bu nedenle gerçek kod, tüm veriler işlenene kadar döngüyle çalışır.

Dönüş Değerlerini Her Zaman Denetleyin

Her soket çağrısı başarısız olabilir. -1 dönüşü errno'yu ayarlar; durumu bildirmek için perror çağrısı yapın. recv sonucunun 0 olması, karşı tarafın bağlantıyı kapattığı anlamına gelir. Sağlam ağ iletişimi, hata denetimine bağlıdır.

Hızlı Kontrol

Soket temellerini ne kadar anladığınızı test edin.

Özet

Soket programlamanın temellerini öğrendiniz.

  • Soket, bir ağ uç noktası ve dosya tanımlayıcısıdır
  • TCP (güvenilir) veya UDP (hızlı) kullanan istemci-sunucu modeli
  • sockaddr_in ile htons ve inet_pton kullanın
  • Sunucu: socket, bind, listen, accept. İstemci: socket, connect

Sıkça Sorulan Sorular

“Soketlere Genel Bakış” dersi ücretsiz mi?

Evet — “Soketlere Genel Bakış” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C Academy kursu toplamda 4 dersten oluşur.

“Soketlere Genel Bakış” dersinde ne öğreneceğim?

Ağ iletişimi temelleri C Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

C Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te C Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Soketlere Genel Bakış” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu C Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her C Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Soketlere Genel Bakış
  2. TCP Sunucusu
  3. TCP İstemcisi
  4. Birden Çok İstemciyi İşleme
← C Academy Sayfasına Dön