Narzędzia użytkownika

Narzędzia witryny


sk2:sockets_netdbs

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_netdbs [2026/10/15 14:12]
jkonczak
sk2:sockets_netdbs [2026/10/15 18:38] (aktualna)
jkonczak
Linia 4: Linia 4:
  
 Najstarsze funkcje do zmiany to ''​gethostbyname''​ i ''​gethostbyaddr''​. Najstarsze funkcje do zmiany to ''​gethostbyname''​ i ''​gethostbyaddr''​.
-Funkcje ​są przestarzałe i powszechnie używane. Problemy z ich działaniem obrazuje poniższy kod:+Te funkcje ​są przestarzałe i powszechnie używane. 
 +Problemy z ich działaniem obrazuje poniższy kod:
 <code cpp ghbn.cpp>​ <code cpp ghbn.cpp>​
 #include <​unistd.h>​ #include <​unistd.h>​
Linia 105: Linia 106:
     const struct sockaddr *addr, // adres (IPv4 lub IPv6) do przerobienia na tekst     const struct sockaddr *addr, // adres (IPv4 lub IPv6) do przerobienia na tekst
     socklen_t addrlen, ​          // ilość bajtów ​ powyższego adresu ​     socklen_t addrlen, ​          // ilość bajtów ​ powyższego adresu ​
-                                 //+
     char * host,                 // wskaźnik na bufor do którego zostanie wpisany adres IP (lub nazwa domenowa) jako tekst     char * host,                 // wskaźnik na bufor do którego zostanie wpisany adres IP (lub nazwa domenowa) jako tekst
     size_t hostLen, ​             // ilość miejsca w powyższym buforze     size_t hostLen, ​             // ilość miejsca w powyższym buforze
                                  // ​  (dla zmiany IP na tekst powinien wystarczyć bufor o długości NI_MAXHOST)                                  // ​  (dla zmiany IP na tekst powinien wystarczyć bufor o długości NI_MAXHOST)
 +
     char * port,                 // wskaźnik na bufor do którego zostanie wpisany numer (lub nazwa) portu jako tekst     char * port,                 // wskaźnik na bufor do którego zostanie wpisany numer (lub nazwa) portu jako tekst
     size_t portLen, ​             // ilość miejsca w powyższym buforze     size_t portLen, ​             // ilość miejsca w powyższym buforze
                                  // ​  (dla zmiany portu na tekst powinien wystarczyć bufor o długości NI_MAXSERV)                                  // ​  (dla zmiany portu na tekst powinien wystarczyć bufor o długości NI_MAXSERV)
 +
     int flags); ​                 // pole flag, pozwalające wybrać m. inn. czy IP i port mają być tłumaczone na numery czy nazwy     int flags); ​                 // pole flag, pozwalające wybrać m. inn. czy IP i port mają być tłumaczone na numery czy nazwy
 </​code>​ </​code>​
Linia 273: Linia 276:
   * odczyta z listy argumentów adres i numer portu   * odczyta z listy argumentów adres i numer portu
   * użyje funkcji ''​getaddrinfo''​ z podpowiedzią żądającą protokołu TCP   * użyje funkcji ''​getaddrinfo''​ z podpowiedzią żądającą protokołu TCP
-  * utworzy gniazdo ​korzystając z rodziny adresów ​zwróconej przez ''​getaddrinfo''​ +  * utworzy gniazdo ​podając funkcji ''​socket''​ jako każdy ​z argumentów odpowiednie pole ze struktury ​zwróconej przez ''​getaddrinfo'' ​(w tej strukturze jest domena, typ i protokół komunikacyjny) 
-  * połączy się funkcją connect ​korzystając ze struktury ​sockaddr i informacji o jej długości ​zwróconej przez ''​getaddrinfo''​+  * połączy się funkcją ​''​connect''​ podając jako każdy poza pierwszym argumentem odpowiednie pole ze struktury zwróconej przez ''​getaddrinfo'' ​(w tej strukturze jest gotowy wskaźnik na ''​sockaddr''​ i rozmiar tam wskazanego tego adresu)
 <​html><​div style=margin-top:​-1.2em></​div></​html>​ <​html><​div style=margin-top:​-1.2em></​div></​html>​
 W tym zadaniu wszystkie argumenty funkcji ''​socket''​ i wszystkie poza deskryptorem W tym zadaniu wszystkie argumenty funkcji ''​socket''​ i wszystkie poza deskryptorem
-gniazda argumenty funkcji ''​connect''​ mają być brane z wyników funkcji ''​getaddrinfo''​+gniazda argumenty funkcji ''​connect''​ mają być brane z wyników funkcji ''​getaddrinfo''​. 
 +Próbuj połączyć się tylko do pierwszej ze zwróconych struktur.
  
 <​small>​ <​small>​
sk2/sockets_netdbs.txt · ostatnio zmienione: 2026/10/15 18:38 przez jkonczak