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
 problema acquisizione nome host da tastiera

Nota: Devi essere registrato per poter inserire un messaggio.
Per registrarti, clicca qui. La Registrazione è semplice e gratuita!

Larghezza finestra:
Nome Utente:
Password:
Modo:
Formato: GrassettoCorsivoSottolineatoBarrato Aggiungi Spoiler Allinea a  SinistraCentraAllinea a Destra Riga Orizzontale Inserisci linkInserisci EmailInserisci FlashInserisci Immagine Inserisci CodiceInserisci CitazioneInserisci Lista Inserisci Faccine
   
Icona Messaggio:              
             
Messaggio:

  * Il codice HTML è OFF
* Il Codice Forum è ON

Smilies
Approvazione [^] Arrabbiato [:(!] Bacio [:X] Bevuta [:273]
Caldo [8D] Compiaciuto [8)]    
compleanno [:269]
Davvero Felice [:D] Diavoletto [}:)] Disapprovazione [V] Domanda [?]
Felice [:)] Fumata [:29] Goloso [:P] Imbarazzato [:I]
Infelice [:(] Morte improvvisa da [:62]
Morto [xx(] Occhio Nero [B)] Occhiolino [;)] Palla 8 [8]
pc [:205]    
Riproduzione [:76]
Scioccato [:O]      

   Allega file
  Clicca qui per inserire la tua firma nel messaggio.
    

V I S U A L I Z Z A    D I S C U S S I O N E
carter9 Inserito il - 03/08/2009 : 13:30:25
ciao a tutti...
ho fatto l'ultimo appello di luglio di reti di calcolatori...
veniva richiesto di acquisire il nome dell'host e la porta da tastiera...
ora...tranne se la cosa non è data da una mia svista...non ho trovato sulle dispense la parte dedicata all'qcquisizione da tastiera del nome dell'host...
c'è qualcuno che sa farlo a può spiegarmi come si fa?
...anche perchè non ho potuto seguire il corso e mi manca solo questo argomento...

ringrazio in anticipo chiunque possa aiutarmi...anche se siamo ad agosto e lo capisco...

buone vacanze a tutti comunque
7   U L T I M E    R I S P O S T E    (in alto le più recenti)
carter9 Inserito il - 12/09/2009 : 18:45:02
ciao ragazzi...sono andato un pochino avanti...
ora l'acquisizione la faccio...ma di dice che fallisce la connect...

c'è qualcuno che mi può dire come mai?
praticamente mi dice che il client è connesso su nome host e numero di porta che dò tramite tastiera...ma mi dice che fallisce la connect()...

carter9 Inserito il - 22/08/2009 : 17:45:28
vi ringrazio per le risposte...
siete stati gentilissimi...
spero di riuscire a risolvere i miei problemi...

grazie ancora
dax Inserito il - 19/08/2009 : 17:46:32
secondo me ti stai perdendo in un bicchier d'acqua.
scusa acquisisci l'host mnemonico come una normalissima stringa, poi ti dichiari una struct hostent* host ed in host ci riversi gethostbyname(nome) che può essere localhost.
prova un pò qualcosa tipo
char* nome="localhost"
struct hostent* host
host = gethostbyname(nome)
poi per l'indirizzo invece ti tocca qualcosa tipo
unsigned long indirizzo
indirizzo = *(u_long *) host->h_addr_list[0]
mò non ti perdere nella riga, alla fine non è complessa, tipo u_long è un modo più breve di scrivere unsigned long
infine assegni indirizzo al campo sin_addr.s_addr della struttura di indirizzamento. 'nsomma se non ho capito male hai chiesto questa roba qui ed è tipicamente da lato client, così tu dai il nome del server e lui si risolve l'indirizzo. (per completezza io ci metterei un controllo appena risolvo l'host dalla gethostbyname, tipo if (host == NULL) { chiudo la socket, libero le risorse e termino con errore }

se ti serve fare il contrario invece, tipicamente da lato server per indentificare i client che si connettono si usa il contrario, la gethostbyaddr
host = gethostbyaddr((char *)&cad.sin_addr.s.addr, 4, AF_INET), il nome dell'host che si è connesso lo trovi dietro host->h_name ed ovviamente è string (%s).
dove cad è la struttura di indirizzamento che hai dichiarato sul client

spero di aver capito quello che vuoi sapere.
noname Inserito il - 05/08/2009 : 12:05:22
La posto tutta, occhio che risale al 2004 e potrebbero esserci errori di gioventù :D



Allegato: psocket.txt
19,59 KB
noname Inserito il - 05/08/2009 : 11:30:37
Dipende dalle funzioni che usi per acquisire l'input da tastiera.

Se usi fgets devi eliminare il carattere di newline alla fine del buffer. Se acquisici un IP devi convertirlo nel formato opportuno, così come la porta. Le funzioni sono inet_aton e atoi.

La stringa passata ad inet_aton deve contenere un IP dotted decimal altrimenti ritorna 0. Ti posto un mio esempio (fatto su linux) in cui se inet_aton non va a buon fine, viene tentata la risoluzione del nome.


int create_TCP_socket(char *dest_addr, unsigned int port)
{
    struct sockaddr_in sa;
    int fd;

    fd = socket(AF_INET, SOCK_STREAM, 0);
    if(fd == -1)
    {
        perror("socket");
        if(fd != 1) close(fd);
          return -1;
    }

    memset(&sa, 0, sizeof(sa));
    sa.sin_family = AF_INET;
    sa.sin_port = htons(port);

    if(inet_aton(dest_addr, &sa.sin_addr) == 0)
    {
        struct hostent *he;
        he = gethostbyname(dest_addr);
        if(!he)
        {
            perror("gethostbyname");
            if(fd != 1) close(fd);
              return -1;
        }
        sa.sin_addr = *(struct in_addr*) he->h_addr_list[0];
    }

    if(connect(fd, (struct sockaddr*) &sa, sizeof(sa)) == -1)
    {
        perror("connect");
        if(fd != 1) close(fd);
          return -1;
    }
    
    return fd;
}



Per capire bene i formati e le strutture delle socket mi è stato molto utile scrivere un API portabile windows/linux. Questa è la inet_aton portabile:



int psl_inet_aton(char *addr, unsigned long *sin_addr)
{
#ifdef WINDOWS
	if((*sin_addr = inet_addr(addr)) == INADDR_NONE)
		return 0;
	else
		return 1;
#endif

#ifdef LINUX
	return inet_aton(addr, sin_addr);
#endif
}


Non so come sia la situazione lì in laboratorio. Immagino windows.
carter9 Inserito il - 05/08/2009 : 10:47:18
si ma poi ho problemi a capire alcune cose...
tipo quando acquisisco l'host posso inserire qualsiasi stringa?...
e poi ho problemi con l'invio dei messaggi se includo questa cosa dell'acquisizione dell'host da tastiera...
qualcuno sa se è proprio indispensabile per passare il laboratorio?

grazie comunque per la risposta
airbag Inserito il - 04/08/2009 : 13:27:50
forse significa semplicemente immetterle da tastiera, richiederle all'utente e una volta digitate acquisirle normalmente

Forum by laureateci.it © 2002 - 2012 Laureateci Communications Torna all'inizio della Pagina
Il DB ha risposto in 0,06 secondi.

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