Programmazione
In questa piccola sezione cercherò di far vedere come
si può implementare IPv6 nei vari linguaggi.
Cominciamo con il C.
Inizialmente vedremo come poter creare un socket per connetterci
ad un server IPv6.
L'esempio più banale e lampante è quello di programmare
un bot che si colleghi ad un server irc.
Naturalmente non intendo metterci funzioni per la ircwar
e stravaganti parser per interagire con lui (cose presenti
in un mio altro progettino :P), il nostro semplice bot si
collegherà al server irc, entrerà in una chan, dirà na caxxata
e uscirà
Vediamo innanzittutto come si cra un socket ipv6.
Mi sto rivolgendo comunque a persone che hanno una minima
conoscenza di C, non spiegherò in dettaglio il codice, se
non le parti interessanti.
Socket!
Per prima cosa nel nostro codice C dovremo importare:
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
s=socket(PF_INET6, SOCK_STREAM,
0);
Il solito socket tcp dove al posto di PF_INET abbiamo
PF_INET6... per ora è semplice :)
La novità è nella struttura struct
sockaddr_in6 , che ho chiamato address6
(ho poca fantasia :P), che riempiremo come al solito.
Per fare questo appunto dovremo sapere i "dati" del server,
l'indirizzo numerico e la porta
serv = gethostbyname2("host", AF_INET6)
Prima novità, per risolvere l'indirizzo del server useremo
la funzione più generale gethostbyname2, in cui appunto
specificheremo la famiglia AF_INET6.
serv è il puntatore della struttura hostent. (restituita
da gethostbyname2)
memset(&address6,0,sizeof(address6));
memcpy((char *)&address6.sin6_addr,serv->h_addr,serv->h_length);
address6.sin6_family = AF_INET6;
address6.sin6_port = htons(porta);
Ok, a questo punto non rimane che effettuare la connesione
al server
connection = connect(s, (struct
sockaddr *) &address6, sizeof(address6));
Finita questa parte teorica vediamo che da IPv4 ad IPv6
i cambiamenti sono minimi e se volete maggiori delucidazioni
c'è sempre il bellissimo Linux Programmer's Manual in tutte
le distro.
Questo è solo un piccolo preambolo, tutto per la programmazione
dei socket ipv6 lo trovate sul RFC 2553, sempre su www.rfc.net
A breve pubblicherò un piccolo programma client/server
di esempio.