Grupa docelowa
Adresatami szkolenia są programiści pragnący nauczyć się bezpośredniej obsługi komunikacji
sieciowej TCP/IP w języku C, szczególnie w systemie UNIX lub pochodnym (np. Linux).
Szkolenie polecamy przede wszystkim programistom przygotowującym się do pracy w projektach
wymagających bezpośredniego skorzystania z komunikacji sieciowej. Może ono być także kolejnym
krokiem w naturalnym rozwoju programisty języka C platformy UNIX (polecamyw tym
miejscu cykl szkoleń C-PD → C-IPC → C-TCP).
Wymagania wstępne:
- programowanie w języku C (np. dzięki szkoleniu C-PD) lub ewentualnie w C++.
Zalecane:
- podstawowa wiedza z zakresu sieci komputerowych,
- podstawy programowania współbieżnego i znajomość mechanizmów IPC systemu UNIX oraz biblioteki pthreads (np. dzięki szkoleniu C-IPC).
Cel i zakres szkolenia
Głównym tematem szkolenia są interfejsy programistyczne pozwalające w języku C bezpośrednio
korzystać z połączeń sieciowych UDP i TCP. Szkolenie obejmuje także podstawowe informacje o
adresacji sieci IP oraz prezentuje różne strategie tworzenia serwerów sieciowych.
Szkolenie prowadzone jest na platformie Linux, a prezentowane mechanizmy powinny być
przenośne między różnymi wersjami systemów opartych o UNIX. Ogólne informacje oraz strategie
korzystania z sieci znajdują swoje odzwierciedlenie także w innych językach programowania i na
innych platformach (np. Java lub Windows), ale różnią się tam w szczegółach API.
Prezentowane jest podstawowe API mechanizmów, dostępne z języka C i korzystające bezpośrednio
z odpowiednich zasobów i funkcji systemowych. Używanie ich w ten sposób daje największą
przenośność rozwiązań i największą kontrolę nad szczegółami.
Po zakończeniu szkolenia aktywny uczestnik potrafi:
- tworzyć klienckie gniazda sieciowe,
- tworzyć gniazda nasłuchujące (strony serwera) i reagować na przychodzące połączenia,
- wykorzystywać adresy IP wersji 4 i 6 oraz nazwy domen,
- wysyłać i odbierać komunikaty UDP,
- komunikować się przez strumienie TCP,
- implementować proste jednowątkowe i wielowątkowe serwery sieciowe.
Szkolenie nie obejmuje m.in. następujących tematów:
- komunikacja międzyprocesowa za pomocą mechanizmów innych niż sieć (patrz szkolenie C-IPC).
- szczegóły biblioteki pthreads oraz synchronizacja wątków (patrz szkolenie C-IPC),
- opakowanie poznawanych tu podstawowych mechanizmów w nakładki języka C++.