Soket temelleri
- C++ kursu
- İleri seviye
- Ders 55/83
- 5 dk
C++ ile soket programlama temellerini öğrenirsin.
Soket nedir?
Bir soket (socket), iki program arasında iletişim kurulan üç noktasıdır. Ağ üzerinden veri göndermek ve almak için kullanılır. C++'ta POSIX soket API'si ile socket() fonksiyonu bir soket oluşturur ve bir dosya tanımlayıcı (int) döndürür.
Örnek: int sock = socket(AF_INET, SOCK_STREAM, 0);. Burada AF_INET IPv4 adres ailesini, SOCK_STREAM güvenilir TCP bağlantısını, 0 ise varsayılan iletişim protokolünü belirtir. Dönen değer negatifse hata vardır. Soket oluşturulduktan sonra connect (istemci) ya da bind + listen (sunucu) ile kullanılır. Bu derste yalnızca soket oluşturmaya odaklanacağız.
AF_INET ve soket tanımlayıcı
AF_INET IPv4 adres ailesini belirtir. Soket oluşturulduğunda dönen int değer bir dosya tanımlayıcıdır (file descriptor). Bu değer, sonraki tüm soket işlemlerinde (connect, bind, send, recv) kullanılır.
Örnek: int sock = socket(AF_INET, SOCK_STREAM, 0); if (sock < 0) { /* hata */ }. Negatif değer hata demektir. Soket kapatmak için close(sock); çağrılır. Soket kullanımı bittiğinde mutlaka kapatılmalıdır; yoksa kaynak sızıntısı oluşur. Bu, dosya işlemlerine benzer: aç, kullan, kapat.
Uygulama Soket oluştur
#include <sys/socket.h> ekle. int sock = socket(AF_INET, SOCK_STREAM, 0); ile bir TCP soketi oluştur. std::cout << "Soket hazır"; ile durumu yazdır.
Başlangıç kodu
#include <iostream>
// Soket başlığını ekle ve soket oluştur
int main() {
// socket çağrısını ve çıktıyı ekle
return 0;
}Örnek çözüm
#include <iostream>
#include <sys/socket.h>
int main() {
int sock = socket(AF_INET, SOCK_STREAM, 0);
std::cout << "Soket hazır";
return 0;
}Beklenen çıktı
Soket hazır
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?
- UDP
- ICMP
- TCP Doğru cevap
- ARP
Açıklama: SOCK_STREAM, güvenilir TCP bağlantısını belirtir.
2 Parçayı rolüne eşle
| Kavram | Anlamı |
|---|---|
AF_INET |
IPv4 adres ailesi |
SOCK_STREAM |
TCP akış |
socket() |
Soket oluşturur |
close(sock) |
Soketi kapatır |
3 Soket türünü tamamla
int sock = socket(AF_INET, ____, 0);
int sock = socket(AF_INET, SOCK_STREAM, 0);
Açıklama: SOCK_STREAM TCP tabanlı güvenilir akış sağlar.