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/07 20:27]
jkonczak
sk2:sockets_intro [2025/10/02 22:24] (aktualna)
jkonczak
Linia 72: Linia 72:
 API stworzone dla systemu BSD zostało przyjęte przez praktycznie wszystkie systemy operacyjne (POSIX socket API, WinSock). API stworzone dla systemu BSD zostało przyjęte przez praktycznie wszystkie systemy operacyjne (POSIX socket API, WinSock).
  
-Pełen opis: [[http://​www.cs.put.poznan.pl/​ddwornikowski/​sieci/​sieci2/​bsdsockets.html]] oraz [[https://​en.wikipedia.org/​wiki/​Berkeley_sockets]]+Po więcej informacji o BSD Socket API zajrzyj na [[https://​en.wikipedia.org/​wiki/​Berkeley_sockets]].
  
 ''​man 7 socket tcp udp''​\\ ''​man 7 socket tcp udp''​\\
Linia 89: Linia 89:
 MSB/LSB first – to głównie problem producentów sprzętu. MSB/LSB first – to głównie problem producentów sprzętu.
 Little/big endian - to problem programistów.\\ Little/big endian - to problem programistów.\\
-[[https://​en.wikipedia.org/​wiki/​Most_significant_bit]]+[[https://​en.wikipedia.org/​wiki/​Bit_numbering#​Most-_vs_least-significant_bit_first]]
 [[https://​pl.wikipedia.org/​wiki/​Kolejność_bajtów]] [[https://​pl.wikipedia.org/​wiki/​Kolejność_bajtów]]
 <​html></​small></​html>​ <​html></​small></​html>​
Linia 98: Linia 98:
 uint16_t networkEndianessPort = htons(hostEndianessPort);​ uint16_t networkEndianessPort = htons(hostEndianessPort);​
 </​code>​ </​code>​
-Opis funkcji pomocniczych – patrz ''​man byteorder'' ​lub [[http://​www.cs.put.poznan.pl/​ddwornikowski/​sieci/​sieci2/​bsdsockets.html#​funkcje-pomocnicze|strona Darka Dwornikowskiego]]+Opis funkcji pomocniczych – patrz ''​man byteorder''​
  
 ==== Zapis adresu gniazda ==== ==== Zapis adresu gniazda ====
Linia 108: Linia 108:
 Ta struktura nie pozwala na bezpośrednie wykorzystanie. Zamiast tego dla IPv4 należy używać **''​sockaddr_in''​** (w C – ''​struct sockaddr_in''​) Ta struktura nie pozwala na bezpośrednie wykorzystanie. Zamiast tego dla IPv4 należy używać **''​sockaddr_in''​** (w C – ''​struct sockaddr_in''​)
  
-Opis struktury – patrz ''​man 7 ip''​ i ''​man netinet_in.h'' ​lub  +Opis struktury – patrz ''​man sockaddr'', ​''​man 7 ip''​ i ''​man netinet_in.h''​
-[[http://​www.cs.put.poznan.pl/​ddwornikowski/​sieci/​sieci2/​bsdsockets.html#​glowne-funkcje-interfejsu-gniazd|strona Darka]]+
  
 <​html><​small></​html>​ <​html><​small></​html>​
 C nie pozwala na dziedziczenie,​ więc zamiast tego ([[https://​en.wikipedia.org/​wiki/​Type_punning#​Sockets_example]]) struktura ''​sockaddr''​ ma kilka "​specjalizacji"​ dla konkretnej rodziny adresów: C nie pozwala na dziedziczenie,​ więc zamiast tego ([[https://​en.wikipedia.org/​wiki/​Type_punning#​Sockets_example]]) struktura ''​sockaddr''​ ma kilka "​specjalizacji"​ dla konkretnej rodziny adresów:
 +<​html><​div style="​margin-top:​-1.4em"></​div></​html>​
   *''​sockaddr_in''​ (INET, czyli IPv4)   *''​sockaddr_in''​ (INET, czyli IPv4)
   *''​sockaddr_in6''​ (INET6, czyli IPv6)   *''​sockaddr_in6''​ (INET6, czyli IPv6)
Linia 136: Linia 136:
     * trzeci argument funkcji connect to rozmiar struktury opisującej adres – ''​sizeof()''​ zmiennej lub typu     * trzeci argument funkcji connect to rozmiar struktury opisującej adres – ''​sizeof()''​ zmiennej lub typu
   * przed wywołaniem funkcji ''​close()''​ zamykał połączenie funkcją ''​shutdown()'';​ \\ <​html><​small></​html>​w funkcji ''​shutdown()''​ można osobno zakończyć nadawanie i odbiór, drugi argument określa co zakończyć –  ''​SHUT_RD''​ /  ''​SHUT_WR''​ / ''​SHUT_RDWR''<​html></​small></​html>​   * przed wywołaniem funkcji ''​close()''​ zamykał połączenie funkcją ''​shutdown()'';​ \\ <​html><​small></​html>​w funkcji ''​shutdown()''​ można osobno zakończyć nadawanie i odbiór, drugi argument określa co zakończyć –  ''​SHUT_RD''​ /  ''​SHUT_WR''​ / ''​SHUT_RDWR''<​html></​small></​html>​
-Opis funkcji ​– [[https://​www.cs.put.poznan.pl/​ddwornikowski/​sieci/​sieci2/​bsdsockets.html#​glowne-funkcje-interfejsu-gniazd|strona Darka]] lub ''​man 3 …''​ / ''​man 3p …''​\\+Opis funkcji ​znajdziesz w podręczniku systemowym (''​man 3 …''​ / ''​man 3p …''​)\\
 Potrzebne pliki nagłówkowe to: Potrzebne pliki nagłówkowe to:
 <code cpp> <code cpp>
sk2/sockets_intro.txt · ostatnio zmienione: 2025/10/02 22:24 przez jkonczak