User Tools

Site Tools


bio-psiec:prog_intro_tcp_client

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
bio-psiec:prog_intro_tcp_client [2025/11/06 12:09] – utworzono jkonczakbio-psiec:prog_intro_tcp_client [2025/11/09 20:46] (current) – [Hello world] jkonczak
Line 19: Line 19:
  
 <WRAP tight> <WRAP tight>
-|''c+////+''|domyślny kompilator C+////+. Zwykle link do ''g+////+'' lub ''clang+////+''| +|''c+%%%%+''|domyślny kompilator C+%%%%+. Zwykle link do ''g+%%%%+'' lub ''clang+%%%%+''| 
-|''c+////+ zrodlo.cpp -o prog''|kompiluje plik ''zrodlo.cpp'' do programu ''prog''| +|''c+%%%%+ zrodlo.cpp -o prog''|kompiluje plik ''zrodlo.cpp'' do programu ''prog''| 
-|''c+////+ -Wall       z.cpp -o p''|włącza wszystkie(("Wszystkie" oznacza wybrany zbiór ostrzeżeń o nazwie wszystkie, poza ''-Wall'' warto też dodać ''-Wextra'' i rozważyć dodanie ''-pedantic''. Szczegóły w dokumentacji kompilatora [[https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html|gcc]]/[[https://clang.llvm.org/docs/UsersManual.html#enabling-all-diagnostics|clang]])) ostrzeżenia kompilatora (''-W'' = warn, ''all'' = wszystkie)| +|''c+%%%%+ -Wall       z.cpp -o p''|włącza wszystkie(("Wszystkie" oznacza wybrany zbiór ostrzeżeń o nazwie wszystkie, poza ''-Wall'' warto też dodać ''-Wextra'' i rozważyć dodanie ''-pedantic''. Szczegóły w dokumentacji kompilatora [[https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html|gcc]]/[[https://clang.llvm.org/docs/UsersManual.html#enabling-all-diagnostics|clang]])) ostrzeżenia kompilatora (''-W'' = warn, ''all'' = wszystkie)| 
-|''c+////+ -O0 -g      z.cpp -o p''|wyłącza optymalizacje i dodaje do programu dane umożliwiające debugowanie| +|''c+%%%%+ -O0 -g      z.cpp -o p''|wyłącza optymalizacje i dodaje do programu dane umożliwiające debugowanie| 
-|''c+////+ --std=c+////+20 z.cpp -o p''|włącza używanie standardu ISO C+////+ z 2020 roku|+|''c+%%%%+ --std=c+%%%%+20 z.cpp -o p''|włącza używanie standardu ISO C+%%%%+ z 2020 roku|
 |<html><code><span style="color:gray;">c++ -pthread    z.cpp -o p</span></code></html>|<html><span style="color:gray;"></html>włącza obsługę wątków standardu POSIX \\ wymagane do wersji glibc ≤ 2.33 [[https://developers.redhat.com/articles/2021/12/17/why-glibc-234-removed-libpthread|[1]]] [[https://lists.gnu.org/archive/html/info-gnu/2021-08/msg00001.html|[2]]]<html></span></html>| |<html><code><span style="color:gray;">c++ -pthread    z.cpp -o p</span></code></html>|<html><span style="color:gray;"></html>włącza obsługę wątków standardu POSIX \\ wymagane do wersji glibc ≤ 2.33 [[https://developers.redhat.com/articles/2021/12/17/why-glibc-234-removed-libpthread|[1]]] [[https://lists.gnu.org/archive/html/info-gnu/2021-08/msg00001.html|[2]]]<html></span></html>|
 </WRAP> </WRAP>
Line 182: Line 182:
 <html><code><span style="background-color:#0f02" title="network">n</span>to<span style="background-color:#00f2" title="host">h</span><span style="background-color:#f002" title="short">s</span>(uint16_t num)</code></html>, <html><code><span style="background-color:#0f02" title="network">n</span>to<span style="background-color:#00f2" title="host">h</span><span style="background-color:#f002" title="short">s</span>(uint16_t num)</code></html>,
 <html><code><span style="background-color:#0f02" title="network">n</span>to<span style="background-color:#00f2" title="host">h</span><span style="background-color:#f002" title="long">l</span>(uint32_t num)</code></html> <html><code><span style="background-color:#0f02" title="network">n</span>to<span style="background-color:#00f2" title="host">h</span><span style="background-color:#f002" title="long">l</span>(uint32_t num)</code></html>
-(więcej w ''[[https://man7.org/linux/man-pages/man3/htons.3.html|man byteorder]]'').+(więcej w ''[[https://man7.org/linux/man-pages/man3/htons.3.html|man byteorder]]''). \\ Do używania tych funkcji trzeba dodać ''#include <arpa/inet.h>''<html><span style="user-select:none">.</span></html>
  
 ====== Wybrane elementy z API systemu operacyjnego ====== ====== Wybrane elementy z API systemu operacyjnego ======
Line 338: Line 338:
  
 ~~Zadanie.#~~ Połącz się pod port 13 swojego komputera używając protokołu TCP. ~~Zadanie.#~~ Połącz się pod port 13 swojego komputera używając protokołu TCP.
 +\\
 +<small>
 +Jeżeli nie masz na swoim komputerze serwera odpowiadającego datą na porcie 13, to
 +poniższe polecenie uruchomi go na wybranym porcie, np. 1313: \\
 +''socat tcp4-listen://1313//,fork exec:date''
 +</small>
  
 ~~Zadanie.#~~ ~~Zadanie.#~~
Line 354: Line 360:
     * określi typ jako strumieniowy – stała ''SOCK_STREAM'' (czyli typ komunikacji używany przez TCP)       * określi typ jako strumieniowy – stała ''SOCK_STREAM'' (czyli typ komunikacji używany przez TCP)  
     * ustawi protokół na TCP – stała ''IPPROTO_TCP'' (można też podać ''0'', oznaczające domyślny protokół; TCP jest domyślnym protokołem typu strumieniowego)     * ustawi protokół na TCP – stała ''IPPROTO_TCP'' (można też podać ''0'', oznaczające domyślny protokół; TCP jest domyślnym protokołem typu strumieniowego)
 +    * funkcja ''socket(…)'' zwraca deskryptor nowo utworzonego gniazda – ten numer trzeba potem podawać do wszystkich funkcji które mają na tym gnieździe operować  
   * funkcją ''connect(…)'' nakaże systemowi operacyjnemu wykonać na wcześniej utworzonym gnieździe połączenie do wcześniej przygotowanego adresu   * funkcją ''connect(…)'' nakaże systemowi operacyjnemu wykonać na wcześniej utworzonym gnieździe połączenie do wcześniej przygotowanego adresu
     * pierwszym argumentem jest informacja które gniazdo ma się połączyć      * pierwszym argumentem jest informacja które gniazdo ma się połączyć 
bio-psiec/prog_intro_tcp_client.1762430994.txt.gz · Last modified: (external edit)