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/htonlana bilgisayardan ağa (kısa/uzun)ntohs/ntohlağ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şturmabind()bir adrese ve bağlantı noktasına bağlanmalisten()pasif olarak işaretlemeaccept()bir bağlantı alma
İstemci Çağrı Sırası
Bir TCP istemcisi daha basittir:
socket()oluşturmaconnect()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_inilehtonsveinet_ptonkullanı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
- Soketlere Genel Bakış
- TCP Sunucusu
- TCP İstemcisi
- Birden Çok İstemciyi İşleme