Pokrewne
- Strona Główna
- Teach Yourself Database Programming with Visual C in 21 Da
- Cornwell Bernard Trylogia Arturiańska Tom 3 Excalibur (3)
- Frank Herbert Dzieci diuny
- Steiner Rudolf Droga do wtajemniczenia
- Christie Agatha Morderstwo w Boze Narodzenie (2
- Parsons Tony Mezczyzna i chlopiec.WHITE
- Harry Eric L Strzec i bronic (SCAN dal 714)
- 1187 Perez Reverte Arturo Fechmistrz
- Chmielewska Joanna Pech (2)
- Lackey Mercrdes Przesilenie
- zanotowane.pl
- doc.pisz.pl
- pdf.pisz.pl
- fopke.keep.pl
[ 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.98 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
.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.98 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 ]