Autore |
Discussione  |
|
marcodj85
Nuovo Utente
Regione: Puglia
Prov.: Bari
Città: Bari
|
Inserito il - 18/06/2009 : 18:59:01
|
ciao ragazzi, vi chiedo una mano, nell'ultimo appello un punto era di stampare sul server il nome dell'host del client con il quale si era instaurata la connessione. ora dato che si dovevano utilizzare la gethostbyname e la gethostbyaddr vi chiedo come si fà dato che non ho trovato nulla in merito nel sulle dispense del prof ne su internet...so come si stampa l'indirizzo e la porta ma non come si stampi il nome. attendo fiducioso in una vostra risposta
|
Marco |
|
noname
Utente medio
 

Regione: Puglia
Prov.: Bari
Città: Città dell'Ammmore
|
Inserito il - 18/06/2009 : 20:35:49
|
Su Google ne trovi di materiale!
http://beej.us/guide/bgnet/output/html/multipage/gethostbynameman.html
Hai il puntatore alla struttura hostent, il campo h_name contiene il nome dell'host.
// THIS HAS BEEN SUPERCEDED
// use getnameinfo() instead!
struct hostent *he;
struct in_addr ipv4addr;
struct in6_addr ipv6addr;
inet_pton(AF_INET, "192.0.2.34", &ipv4addr);
he = gethostbyaddr(&ipv4addr, sizeof ipv4addr, AF_INET);
printf("Host name: %s\n", he->h_name);
inet_pton(AF_INET6, "2001:db8:63b3:1::beef", &ipv6addr);
he = gethostbyaddr(&ipv6addr, sizeof ipv6addr, AF_INET6);
printf("Host name: %s\n", he->h_name);
|
 |
|
filippo
Utente Molto Chiaro
   

Regione: Puglia
Prov.: Bari
|
Inserito il - 19/06/2009 : 01:45:30
|
Citazione: Messaggio inserito da marcodj85
ciao ragazzi, vi chiedo una mano, nell'ultimo appello un punto era di stampare sul server il nome dell'host del client con il quale si era instaurata la connessione. ora dato che si dovevano utilizzare la gethostbyname e la gethostbyaddr vi chiedo come si fà dato che non ho trovato nulla in merito nel sulle dispense del prof ne su internet...so come si stampa l'indirizzo e la porta ma non come si stampi il nome. attendo fiducioso in una vostra risposta
Preciso che ci sono anche le dispense sul DNS in C (http://www.di.uniba.it/~reti/calc/laboratorio.htm). Non dimenticarti del libro di testo: ci sono gli esempi che cerchi. |
 |
|
marcodj85
Nuovo Utente
Regione: Puglia
Prov.: Bari
Città: Bari
|
Inserito il - 20/06/2009 : 11:25:39
|
grazie per la risposta anche se non era quella che cercavo....in pratica senza usare una funzione e mettendo il codice direttamente nel main lo sapevo fare anche io...il problema si pone se vuoi utilizzare una funzione tipo:
void getHostByAddr(unsigned long addr) { struct hostent host; host=gethostbyaddr((char )&addr, 4, AF_INET); const char canonical_name=host-h_name; printf(Messaggio ricevuto dal Client %snn, canonical_name); }
in quel caso non so come cavolo si faccia...se sapete delucidarmi in proposito |
Marco |
 |
|
kikko
Utente medio
 

Regione: Puglia
Prov.: Taranto
|
Inserito il - 20/06/2009 : 12:31:01
|
Prof è possibile di spostare l'esame x le 15?perchè io in quel giorno(23 Giugno) alle 11 ho un esame. |
!!!!!...CaRpE dIeM...!!!!!! |
 |
|
noname
Utente medio
 

Regione: Puglia
Prov.: Bari
Città: Città dell'Ammmore
|
Inserito il - 20/06/2009 : 16:26:02
|
In questo caso è la sintassi del C e il formato delle strutture che ti sfugge...
|
 |
|
marcodj85
Nuovo Utente
Regione: Puglia
Prov.: Bari
Città: Bari
|
Inserito il - 21/06/2009 : 18:19:34
|
grazie mi sei stato di grande aiuto ora si che ho capito come fare..... , qualcuno che mi da seriamente una mano senza criticare e basta?? |
Marco |
 |
|
airbag
utente salvato da un
  

Città: manchester
|
Inserito il - 21/06/2009 : 19:48:58
|
Citazione: Messaggio inserito da marcodj85
grazie mi sei stato di grande aiuto ora si che ho capito come fare..... , qualcuno che mi da seriamente una mano senza criticare e basta??
In the garden of England dead moles lie inside their holes The dead-end tunnels crumble in the rain underfoot Innit a shame? |
<>Can't you see them? Can't you see them? roots can't hold them Bugs console them<> <big><big><big><i><font color="#000033">since yourheadisshacking inthat yourarmsareshacking inthat yourfeetareshacking cause theEarthisshackin'</font></i></big></big></big> |
 |
|
noname
Utente medio
 

Regione: Puglia
Prov.: Bari
Città: Città dell'Ammmore
|
Inserito il - 21/06/2009 : 20:28:29
|
If we call for the proof and we question the answers Only the doubt will grow Are we blind to the truth or a sign to believe in? Only the wise will know
|
 |
|
juniorjak
Nuovo Utente

Regione: Puglia
Prov.: Bari
Città: Canosa di Puglia
|
Inserito il - 22/06/2009 : 22:49:27
|
Citazione: Messaggio inserito da marcodj85
grazie per la risposta anche se non era quella che cercavo....in pratica senza usare una funzione e mettendo il codice direttamente nel main lo sapevo fare anche io...il problema si pone se vuoi utilizzare una funzione tipo:
void getHostByAddr(unsigned long addr) { struct hostent host; host=gethostbyaddr((char )&addr, 4, AF_INET); const char canonical_name=host-h_name; printf(Messaggio ricevuto dal Client %snn, canonical_name); }
in quel caso non so come cavolo si faccia...se sapete delucidarmi in proposito
scusa ma non ho capito bene, hai problemi con la sintassi? Perchè ci sarebbe qualche errore di sintassi... In ogni caso spostare una parte del main in una funzione/procedura non è complicato. Se non sai che errori ci siano ti passo una versione della tua funzione con qualche modifica, utilizzo linux quindi dovresti cambiare il file da includere netdb.h con quello/i per windows...
/****************************
uso: hostn ip
(es: hostn 127.0.0.1)
****************************/
#include <netdb.h>
#include <stdio.h>
#include <malloc.h>
void getHostByAddr(struct in_addr *);
int main(int argc,char* argv[]){
struct in_addr *ip = (struct in_addr *)malloc(sizeof(struct in_addr));
ip->s_addr = inet_addr(argv[1]);
getHostByAddr(ip);
return 0;
}
void getHostByAddr(struct in_addr *ip)
{
struct hostent *host;
struct sockaddr_in *indirizzo;
indirizzo = malloc(sizeof(struct sockaddr_in));
indirizzo->sin_addr.s_addr = ip->s_addr;
host=gethostbyaddr((char *)&indirizzo->sin_addr.s_addr, 4, AF_INET);
char* canonical_name=host->h_name;
printf("Hostname: %s \n", canonical_name);
}
ovviamente puoi controllare se l'ip è valido ecc.. questo è solo l'essenziale... ciao |
marco
| GNU/Linux User #392054 |
|
 |
|
|
Discussione  |
|