C Academy · Pelajaran

Gambaran Umum Socket

Dasar komunikasi jaringan.

Pelajaran 1 dari 413 langkah

Gambaran Umum Socket adalah pelajaran C Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C Academy mencakup 4 pelajaran total.

Apa Itu Soket

Soket adalah titik ujung untuk komunikasi jaringan. Pada sistem POSIX, soket merupakan deskriptor berkas yang dapat Anda gunakan untuk membaca dan menulis, sehingga dua program dapat bertukar data melalui jaringan atau mesin yang sama.

Model Klien-Peladen

Sebagian besar aplikasi jaringan menggunakan model klien-peladen:

  • Peladen mengikatkan diri ke suatu alamat dan menunggu koneksi
  • Klien memulai koneksi ke peladen

Setelah terhubung, kedua pihak dapat mengirim dan menerima data.

TCP vs UDP

Dua protokol transportasi utama:

  • TCP (SOCK_STREAM): andal, berurutan, dan berbasis koneksi
  • UDP (SOCK_DGRAM): cepat, tanpa koneksi, dan dapat menghilangkan atau mengubah urutan paket

Gunakan TCP untuk ketepatan, dan UDP untuk streaming dengan latensi rendah.

Membuat Soket

Pemanggilan socket() mengembalikan deskriptor berkas. Argumennya adalah keluarga alamat (AF_INET untuk IPv4), tipe (SOCK_STREAM untuk TCP), dan protokol (0 untuk nilai bawaan).

/* 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;
}

Struktur Alamat Soket

Alamat IPv4 dijelaskan oleh struct sockaddr_in, yang menyimpan keluarga, porta, dan alamat IP. Fungsi menerima struct sockaddr * generik, sehingga Anda perlu melakukan konversi tipe.

#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 */
}

Urutan Bita Itu Penting

Jaringan menggunakan big-endian (urutan bita jaringan). Lakukan konversi dengan:

  • htons / htonl dari host ke jaringan (short/long)
  • ntohs / ntohl dari jaringan ke host

Selalu konversikan porta dan alamat, atau Anda akan berkomunikasi dengan tempat yang salah.

Konversi Alamat IP

inet_pton mengonversi IP berbentuk teks seperti "127.0.0.1" menjadi bentuk biner yang disimpan dalam sin_addr, sedangkan inet_ntop melakukan konversi sebaliknya untuk pencetakan.

#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 */
}

Urutan Pemanggilan Peladen

Peladen TCP biasanya memanggil fungsi-fungsi berikut secara berurutan:

  • socket() membuat soket
  • bind() mengaitkan soket dengan alamat dan porta
  • listen() menandainya sebagai pasif
  • accept() mendapatkan koneksi

Urutan Pemanggilan Klien

Klien TCP lebih sederhana:

  • socket() membuat soket
  • connect() menghubungi alamat peladen

Setelah itu, klien dapat menggunakan send dan recv pada deskriptor yang sama.

Mengirim dan Menerima

Gunakan send() dan recv() (atau write() dan read() generik). Keduanya dapat mentransfer lebih sedikit bita daripada yang diminta, sehingga kode nyata harus mengulang hingga semua data ditangani.

Selalu Periksa Nilai Kembalian

Setiap pemanggilan soket dapat gagal. Nilai kembalian -1 menetapkan errno; panggil perror untuk melaporkannya. Nilai 0 dari recv berarti pihak lawan telah menutup koneksi. Keandalan jaringan sangat bergantung pada pemeriksaan kesalahan.

Uji Singkat

Uji pemahaman Anda tentang dasar-dasar soket.

Rangkuman

Anda telah mempelajari dasar-dasar pemrograman soket.

  • Soket adalah titik ujung jaringan dan deskriptor berkas
  • Model klien-peladen menggunakan TCP (andal) atau UDP (cepat)
  • Gunakan sockaddr_in bersama htons dan inet_pton
  • Peladen: socket, bind, listen, accept. Klien: socket, connect
Gratis untuk memulai

Belajar C dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
39
Pelajaran
144

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Gambaran Umum Socket” gratis?

Ya — teks lengkap “Gambaran Umum Socket” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C Academy, upgrade ke CoddyKit PRO. Kursus C Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Gambaran Umum Socket”?

Dasar komunikasi jaringan. Kamu berlatih C Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai C Academy?

Tidak diperlukan pengalaman sebelumnya. C Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Gambaran Umum Socket” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran C Academy ini?

Ya. Setiap pelajaran C Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Gambaran Umum Socket
  2. Server TCP
  3. Klien TCP
  4. Menangani Banyak Klien
← Kembali ke C Academy