[ Pobierz całość w formacie PDF ]
.in_addr i in6_addrużywać getaddrinfo() i getnameinfo() gdzie tylko to możliweużywać struktury sockaddr_storage mogÄ…cej przechowywać dane o adresach IPv4i IPv6Przystosowywanie aplikacji typu  finger czy  telnet jest proste, gdyż nie wymaga mo-dyfikacji samego protokoÅ‚u aplikacji.Sprawa siÄ™ komplikuje jeżeli chcemy przystosowaćnp.klienta  ftp.W przypadku  ftp zostaÅ‚y stworzone dodatkowe rozszerzenia opisanew RFC2428 ([10]), które musielibyÅ›my zaimplementować.Poniżej zamieszczam przykÅ‚adowy fragment kodu programu obsÅ‚ugujÄ…cy poÅ‚Ä…czenia12[.] - nieistotne w tym artykule informacje o nameserwerach itp.9 8 APLIKACJEwyÅ‚Ä…cznie IPv4 (pierwsza wersja) oraz obsÅ‚ugujacy poÅ‚Ä…czenia IPv4 oraz IPv6 (drugaÛwersja).Tak wyglÄ…da typowy kod obsÅ‚ugujÄ…cy wyÅ‚Ä…cznie IPv4:const char *conhostname;struct hostent *conhost;struct sockaddr_in name;int addr_len, mysock, port;conhost = gethostbyname(conhostname);name.sin_port = htons(port);name.sin_family = AF_INET;bcopy((char *)conhost->h_addr,(char *)&name.sin_addr,conhost->h_length);mysock = socket(AF_INET, SOCK_STREAM, 0);addr_len = sizeof(name);connect(mysock, (struct sockaddr *)&name, addr_len);Funkcja gethostbyname() zwraca dane dotyczÄ…ce szukanego hosta, nastÄ™pnie funkcja soc-ket() tworzy gniazdo rodziny AF_INET, a connect() inicjuje poÅ‚Ä…czenie przez to gniazdo.OdpowiadajÄ…cy powyższemu kod, zdolny obsÅ‚ugiwać zarówno IPv4 jak i IPv6 wy-glÄ…da tak:const char *conhostname;struct addrinfo hints, *res, *res0;char myport[NI_MAXSERV];int mysock;memset(&hints, 0, sizeof(hints));hints.ai_family = AF_UNSPEC;hints.ai_socktype = SOCK_STREAM;getaddrinfo(conhostname, myport, &hints, &res0)for (res = res0; res; res = res->ai_next) {if ((mysock = socket(res->ai_family,res->ai_socktype,res->ai_protocol)) ai_addr,res->ai_addrlen) [ Pobierz caÅ‚ość w formacie PDF ]
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • agnieszka90.opx.pl