Forum by laureateci.it
[ Home | REGOLE FORUM | Tutti i blog | Profilo | Registrati | CHAT | Discussioni Attive | Discussioni Recenti | Segnalibro | Msg privati | Sondaggi Attivi | Utenti | Download Informatica | Download ICD | Download TPS | Download Magistrale | Download Specialistica | Giochi | Cerca nel web | cerca | faq | RSS ]
Nome Utente:
Password:
Salva Password
Password Dimenticata?

 Tutti i Forum
 INFORMATICA - Terzo Anno
 Reti di Calcolatori
 aiuto problema gethostbyaddr
 Nuova Discussione  Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
I seguenti utenti stanno leggendo questo Forum Qui c'è:
Autore Discussione Precedente Discussione Discussione Successiva  

marcodj85
Nuovo Utente


Regione: Puglia
Prov.: Bari
Città: Bari


Inserito il - 18/06/2009 : 18:59:01  Mostra Profilo  Visita l'Homepage di marcodj85  Clicca per vedere l'indirizzo MSN di marcodj85 Invia a marcodj85 un Messaggio Privato  Rispondi Quotando
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

saladfinger


Regione: Puglia
Prov.: Bari
Città: Città dell'Ammmore


Inserito il - 18/06/2009 : 20:35:49  Mostra Profilo  Visita l'Homepage di noname Invia a noname un Messaggio Privato  Rispondi Quotando
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);

Torna all'inizio della Pagina

filippo
Utente Molto Chiaro

aw


Regione: Puglia
Prov.: Bari


Inserito il - 19/06/2009 : 01:45:30  Mostra Profilo  Visita l'Homepage di filippo Invia a filippo un Messaggio Privato  Rispondi Quotando
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.
Torna all'inizio della Pagina

marcodj85
Nuovo Utente


Regione: Puglia
Prov.: Bari
Città: Bari


Inserito il - 20/06/2009 : 11:25:39  Mostra Profilo  Visita l'Homepage di marcodj85  Clicca per vedere l'indirizzo MSN di marcodj85 Invia a marcodj85 un Messaggio Privato  Rispondi Quotando
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
Torna all'inizio della Pagina

kikko
Utente medio

piccino


Regione: Puglia
Prov.: Taranto


Inserito il - 20/06/2009 : 12:31:01  Mostra Profilo  Visita l'Homepage di kikko Invia a kikko un Messaggio Privato  Rispondi Quotando
Prof è possibile di spostare l'esame x le 15?perchè io in quel giorno(23 Giugno) alle 11 ho un esame.

!!!!!...CaRpE dIeM...!!!!!!
Torna all'inizio della Pagina

noname
Utente medio

saladfinger


Regione: Puglia
Prov.: Bari
Città: Città dell'Ammmore


Inserito il - 20/06/2009 : 16:26:02  Mostra Profilo  Visita l'Homepage di noname Invia a noname un Messaggio Privato  Rispondi Quotando
In questo caso è la sintassi del C e il formato delle strutture che ti sfugge...
Torna all'inizio della Pagina

marcodj85
Nuovo Utente


Regione: Puglia
Prov.: Bari
Città: Bari


Inserito il - 21/06/2009 : 18:19:34  Mostra Profilo  Visita l'Homepage di marcodj85  Clicca per vedere l'indirizzo MSN di marcodj85 Invia a marcodj85 un Messaggio Privato  Rispondi Quotando
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
Torna all'inizio della Pagina

airbag
utente salvato da un

airbag

Città: manchester


Inserito il - 21/06/2009 : 19:48:58  Mostra Profilo  Visita l'Homepage di airbag  Invia a airbag un messaggio AOL Invia a airbag un Messaggio Privato  Rispondi Quotando
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>
Torna all'inizio della Pagina

noname
Utente medio

saladfinger


Regione: Puglia
Prov.: Bari
Città: Città dell'Ammmore


Inserito il - 21/06/2009 : 20:28:29  Mostra Profilo  Visita l'Homepage di noname Invia a noname un Messaggio Privato  Rispondi Quotando
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
Torna all'inizio della Pagina

juniorjak
Nuovo Utente

FBSD-Daemon


Regione: Puglia
Prov.: Bari
Città: Canosa di Puglia


Inserito il - 22/06/2009 : 22:49:27  Mostra Profilo  Visita l'Homepage di juniorjak Invia a juniorjak un Messaggio Privato  Rispondi Quotando
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 |
Torna all'inizio della Pagina
  Discussione Precedente Discussione Discussione Successiva  
 Nuova Discussione  Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
Vai a:
Forum by laureateci.it © 2002 - 2012 Laureateci Communications Torna all'inizio della Pagina
Il DB ha risposto in 0,22 secondi.

TargatoNA.it | SuperDeejay.Net | Antidoto.org | Brutto.it | Equiweb.it | Snitz Forum 2000