PDA

Visualizza la versione completa : [C] Ottenere nome simbolico dell' host collegato


Metallica
14-06-2008, 12:46
Ho un server e un client in comunicazione tramite socket TCP, quando
il server è in ascolto e il client si connette ho bisogno di conoscere
il nome simbolico del client ed altre info, per ora riesco a ottenere
l'ip ma non so come fare ad ottenere il nome simbolico. Questa è la
funzione:


void funzione(int fd){
struct sockaddr_in tmp;
unsigned int addrlen=sizeof(tmp);
getpeername(fd,(struct sockaddr*)&tmp,&addrlen);
printf("Client: %s\n",inet_ntoa(tmp.sin_addr));

}


Siccome sono in locale quando invocata viene stampato 127.0.0.1,
quello che vorrei è fargli stampare localhost (il nome simbolico
appunto).

Ho sentito parlare di getnameinfo() ma non riesco a capire come usarla nella mia funzione.

bum
14-06-2008, 14:03
Questo potebbe essere di aiuto http://linuxreviews.org/man/getnameinfo/. (http://linuxreviews.org/man/getnameinfo/)

Metallica
15-06-2008, 15:11
Già, ma dando un'occhiata al prototipo prende una struct sockaddr questa funzione quindi dovrei cmq usare getpeername così in tmp ho un sockaddr_in valido.
Dopo creo un sockaddr che deve puntare al sockaddr_in (ovvero a tmp), stando a quanto dice il man:


The sockaddr structure should point to either a sockaddr_in or sockaddr_in6 structure (for IPv4 or IPv6 respectively) [...]

Quindi creo una struttura sockaddr:

struct sockaddr *sa;
ma come faccio ora a far puntare sa a tmp???

Metallica
27-06-2008, 14:14
Non riesco ad usarla, qualcuno mi direbbe come fare????

Metallica
29-06-2008, 18:49
up

Loading