Narzędzia użytkownika

Narzędzia witryny


sk2:sockets_intro

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
sk2:sockets_intro [2024/10/02 13:47]
jkonczak [Hello world]
sk2:sockets_intro [2024/10/07 20:27] (aktualna)
jkonczak
Linia 35: Linia 35:
 Interface obsługi gniazd BSD jest bardzo zbliżony do API specyfikowanego przez POSIX do obsługi plików (który znacie z PSiW). \\ <​html><​small>​ BSD socket API został przyjęty jako standard przez większość systemów operacyjnych,​ m. inn. został bez większych zmian wpisany w standard POSIX.</​small></​html>​ Interface obsługi gniazd BSD jest bardzo zbliżony do API specyfikowanego przez POSIX do obsługi plików (który znacie z PSiW). \\ <​html><​small>​ BSD socket API został przyjęty jako standard przez większość systemów operacyjnych,​ m. inn. został bez większych zmian wpisany w standard POSIX.</​small></​html>​
  
-//Zadanie ​1.// Napisz program który otworzy plik o nazwie '​date'​ i wypisze jego zawartość. Poniżej "​pusty"​ plik źródłowy. Pomiń obsługę błędów. (Jeśli nie wiesz skąd wziąć plik ''​date'',​ wpisz w konsolę: ''​date>​date''​ .) \\ Do obsługi pliku i standardowego wejścia / wyjścia użyj funkcji ''​open'',​ ''​read'',​ ''​write''​ i ''​close''​. \\+~~Zadanie.#~~ Napisz program który otworzy plik o nazwie '​date'​ i wypisze jego zawartość. Poniżej "​pusty"​ plik źródłowy. Pomiń obsługę błędów. (Jeśli nie wiesz skąd wziąć plik ''​date'',​ wpisz w konsolę: ''​date>​date''​ .) \\ Do obsługi pliku i standardowego wejścia / wyjścia użyj funkcji ''​open'',​ ''​read'',​ ''​write''​ i ''​close''​. \\
 Opis funkcji znajdziesz na stronach podręcznika systemowego (np. ''​man open''​). Opis funkcji znajdziesz na stronach podręcznika systemowego (np. ''​man open''​).
 <file cpp z1.cpp> <file cpp z1.cpp>
Linia 47: Linia 47:
 </​file>​ </​file>​
  
-//Zadanie ​2.// Co trzeba dodać do obsłużenia błędów?+~~Zadanie.#~~ Co trzeba dodać do obsłużenia błędów?
  
 ==== Adresacja połączeń na warstwie transportu ==== ==== Adresacja połączeń na warstwie transportu ====
  
-//Zadanie ​3.// Jakie adresy (numery) są potrzebne by móc przesłać wiadomość do konkretnego programu na wybranym komputerze?+~~Zadanie.#~~ Jakie adresy (numery) są potrzebne by móc przesłać wiadomość do konkretnego programu na wybranym komputerze?
  
 Przypomnienie programów ''​netcat''​ / ''​socat''​ oraz programów ''​netstat''​ / ''​ss''​ ([[sk1:​transport#​monitorowanie_biezacych_polaczen|link do materiałów z SK1]]) Przypomnienie programów ''​netcat''​ / ''​socat''​ oraz programów ''​netstat''​ / ''​ss''​ ([[sk1:​transport#​monitorowanie_biezacych_polaczen|link do materiałów z SK1]])
  
-//Zadanie ​4.// Prześlij między sobą dowolny tekst używając programu ''​netcat''​ lub ''​socat''​+~~Zadanie.#~~ Prześlij między sobą dowolny tekst używając programu ''​netcat''​ lub ''​socat''​
  
-//Zadanie ​5.// Nawiąż połączenie na port 13 (daytime) twojego komputera. \\ +~~Zadanie.#~~ Nawiąż połączenie na port 13 (daytime) twojego komputera. \\ 
 <​html><​small></​html>​Jeżeli używasz własnego komputera i port 13 nie odpowiada, uruchom i pozostaw działającą w osobnym terminalu komendę \\ ''​socat tcp-listen:​1313,​fork,​reuseaddr exec:​date''​   i do tego oraz dalszych ćwiczeń używaj port 1313.<​html></​small></​html>​ <​html><​small></​html>​Jeżeli używasz własnego komputera i port 13 nie odpowiada, uruchom i pozostaw działającą w osobnym terminalu komendę \\ ''​socat tcp-listen:​1313,​fork,​reuseaddr exec:​date''​   i do tego oraz dalszych ćwiczeń używaj port 1313.<​html></​small></​html>​
  
Linia 120: Linia 120:
 ==== "Hello world" ==== ==== "Hello world" ====
  
-//Zadanie ​6.// Zmień program do odczytu pliku tak, by zamiast funkcji ''​open(…)'':​+~~Zadanie.#~~ Zmień program do odczytu pliku tak, by zamiast funkcji ''​open(…)'':​
   * tworzył funkcją ''​socket(…)''​ gniazdo:   * tworzył funkcją ''​socket(…)''​ gniazdo:
     * domeny komunikacyjnej protokołu IPv4 – stała ''​PF_INET''​ (zamiennie ''​AF_INET''​) ​     * domeny komunikacyjnej protokołu IPv4 – stała ''​PF_INET''​ (zamiennie ''​AF_INET''​) ​
Linia 144: Linia 144:
 </​code>​ </​code>​
  
-//Zadanie ​7.// Przekształć poprzedni program tak, by czytał z adresu IP i portu podanego w argumentach programu.+~~Zadanie.#~~ Przekształć poprzedni program tak, by czytał z adresu IP i portu podanego w argumentach programu.
  
-//Zadanie ​8.// Dodaj do programu obsługę błędów zwracanych przez funkcje ''​connect''​ i ''​read''​.+~~Zadanie.#~~ Dodaj do programu obsługę błędów zwracanych przez funkcje ''​connect''​ i ''​read''​.
  
-//Zadanie ​9.// Zmień IP na losowe (tak, by nie odpowiadało na próbę połączenia). Programem ''​netstat -tnp''​ / ''​ss -tnp''​ wyświetl utworzone połączenie.+~~Zadanie.#~~ Zmień IP na losowe (tak, by nie odpowiadało na próbę połączenia). Programem ''​netstat -tnp''​ / ''​ss -tnp''​ wyświetl utworzone połączenie.
  
 ==== Funkcje send/​recv/​… ==== ==== Funkcje send/​recv/​… ====
Linia 165: Linia 165:
 </​small>​ </​small>​
  
-//Zadanie ​10.// Zmień program tak, by zamiast ''​read(…)''​ używał funkcji ''​recv(…)''​+~~Zadanie.#~~ Zmień program tak, by zamiast ''​read(…)''​ używał funkcji ''​recv(…)''​
  
 <​small>​ <​small>​
-//Zadanie ​11.// Przed wywołaniem ''​connect''​ ustal lokalny adres funkcją ''​bind''​. Powtórz zadanie 8 i 9.+~~Zadanie.#~~ Przed wywołaniem ''​connect''​ ustal lokalny adres funkcją ''​bind''​. Powtórz zadanie 8 i 9.
 </​small>​ </​small>​
sk2/sockets_intro.1727869629.txt.gz · ostatnio zmienione: 2024/10/02 13:47 przez jkonczak