sk2:sockets_full
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| sk2:sockets_full [2024/10/07 18:25] – jkonczak | sk2:sockets_full [2026/11/01 18:31] (current) – [UDP vs TCP - przypomnienie] jkonczak | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Interface gniazd BSD (1/2) ====== | ====== Interface gniazd BSD (1/2) ====== | ||
| - | Schemat kolejności wywołać funkcji bibliotecznych: | + | Schemat kolejności wywołań funkcji bibliotecznych: |
| < | < | ||
| - | (Porównaj | + | ----- |
| + | Funkcja '' | ||
| + | < | ||
| ===== Serwer TCP ===== | ===== Serwer TCP ===== | ||
| Aby oczekiwać na przychodzące połączenia TCP konieczne jest stworzenie gniazda do odbierania nowych połączeń. Takie gniazdo, tzw. **gniazdo nasłuchujące** (listening), | Aby oczekiwać na przychodzące połączenia TCP konieczne jest stworzenie gniazda do odbierania nowych połączeń. Takie gniazdo, tzw. **gniazdo nasłuchujące** (listening), | ||
| Line 13: | Line 16: | ||
| kierowane tylko na ten adres – np. 127.0.0.1 ('' | kierowane tylko na ten adres – np. 127.0.0.1 ('' | ||
| połączenia mają być ograniczone do połączeń z localhosta. | połączenia mają być ograniczone do połączeń z localhosta. | ||
| + | \\ | ||
| + | < | ||
| + | (little/big endian), więc wpisując je np. do odpowiedniego pola struktury | ||
| + | '' | ||
| + | Dowolny adres IPv4 to 0.0.0.0, więc w tym szczególnym przypadku zmiana porządku | ||
| + | bajtów jest niepotrzebna.</ | ||
| **Wywołanie funkcji '' | **Wywołanie funkcji '' | ||
| - | Argumentem funkcji '' | + | Argumentem funkcji '' |
| + | w kolejce na odebranie | ||
| + | jeszcze funkcji '' | ||
| + | udało mu się połączyć)((Argument " | ||
| + | zakresie '' | ||
| - | Do odebrania nowych połączeń używa się funkcji '' | + | Do odebrania nowych połączeń używa się funkcji '' |
| + | zwraca nowe gniazdo** reprezentujące nawiązane połączenie. Jeśli w kolejce czeka | ||
| + | już jakieś połączenie, | ||
| + | razie blokuje się do czasu aż pojawi się nowy klient. | ||
| < | < | ||
| Line 30: | Line 46: | ||
| * zakończy program. | * zakończy program. | ||
| - | ~~Zadanie.# | + | ~~Zadanie.# |
| setsockopt(sockFd, | setsockopt(sockFd, | ||
| < | < | ||
| Line 41: | Line 57: | ||
| Funkcja '' | Funkcja '' | ||
| - | * gdzie ma zapisać ten adres – tj. podać adres struktury sockaddr (drugi argument) | + | * gdzie ma zapisać ten adres – tj. podać adres struktury |
| - | * adres zmiennej, która w momencie wywołania '' | + | * adres zmiennej, która w momencie wywołania '' |
| sockaddr_in nazwa_zmiennej; | sockaddr_in nazwa_zmiennej; | ||
| socklen_t inna_zmienna = sizeof(nazwa_zmiennej); | socklen_t inna_zmienna = sizeof(nazwa_zmiennej); | ||
| Line 98: | Line 114: | ||
| Tworząc gniazdo UDP należy użyć następujących argumentów: | Tworząc gniazdo UDP należy użyć następujących argumentów: | ||
| + | < | ||
| <code cpp> | <code cpp> | ||
| socket(PF_INET, | socket(PF_INET, | ||
| Line 103: | Line 120: | ||
| </ | </ | ||
| - | UDP nie nawiązuje połączenia – do odbioru i wysyłania wiadomości należy używać funkcji '' | + | UDP nie nawiązuje połączenia – do odbioru i wysyłania wiadomości należy używać funkcji '' |
| + | \\ | ||
| + | < | ||
| + | [[https:// | ||
| + | </ | ||
| - | Przykład użycia funkcji '' | + | Przykład użycia funkcji '' |
| + | < | ||
| + | < | ||
| sockaddr_in nazwa_zmiennej {...}; | sockaddr_in nazwa_zmiennej {...}; | ||
| socklen_t inna_zmienna = sizeof(nazwa_zmiennej); | socklen_t inna_zmienna = sizeof(nazwa_zmiennej); | ||
sk2/sockets_full.1728325520.txt.gz · Last modified: (external edit)