ciao a tutti...volevo chiedere se esiste in C qualche funzione che permette di prelevare l'indirizzo ip di una macchina connessa ad una rete locale! a la macchina gira su windows xp sp2!
grazie a tutti
ciao a tutti...volevo chiedere se esiste in C qualche funzione che permette di prelevare l'indirizzo ip di una macchina connessa ad una rete locale! a la macchina gira su windows xp sp2!
grazie a tutti
"Non può piovere per sempre" Il Corvo
Forza Vigor!
Devi avere almeno un parametro con cui identificare la macchina della quale vuoi l'indirizzo.
Poi potrai enumerarle tutte e cercare la tua.
"Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)
"Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)
http://xvincentx.netsons.org/programBlog
no...a me serve trovare l'ip della mia macchina! nel senso creare un programma che avviandolo su una macchina salvi in un file il proprio ip! mi serve perchè ho una macchina collegata in rete gestita con indirizzi dinamici e poichè gestisco questa macchina da remoto...da un'altra stanza, mi serve sempre l'indirizzo ip della macchina per connettermi...quindi avevo pensato di fare un programmino che a ogni avvio della macchina trova il proprio indirizzo ip nella rete locale e lo scrive in una cartella condivisa nella rete...così io dalla mia macchina posso vedere il suo ip e connettermi! spero di essermi spiegato...poi comunque non so se come soluzione sia un pò strampalata...però mi sembrava fattibile!
"Non può piovere per sempre" Il Corvo
Forza Vigor!
No MP tecnici (non rispondo nemmeno!), usa il forum.
ringrazio per il link...ho letto un pò la discussione e un altro link presente nella discussione, ma ho capito che bisogna usare le socket e le funzioni gethostname e poi dopo aver ricevuto il nome, passarlo alla funzione gethostebyname che ritorna un puntatore a stuttura se non ho capito male, e poi da questa struttura tramite la funzione inet_ntoa si ricava la stringa dell'ip...giusto? detta così sembra facile...ma per me che sono totalmente allo scuro in questo campo della programmazione...non è poi tanto semplice! ho provato anche quel programma che è stato postato nella discussione da PeppePes88:
ma onestamente a me non funziona niente...sarà che sbaglio a compilare...perchè mi da questi errori:codice:#include <stdio.h> #include <stdlib.h> #include <winsock.h> int main(int argc, char *argv[]) { WSADATA data; HOSTENT *host; int err = WSAStartup(MAKEWORD(2,2), &data), i = 0; char nome_host[100]; if ( err == SOCKET_ERROR) fprintf(stderr, "WSAStartup ERRORE : %d", WSAGetLastError()); err = gethostname( nome_host, sizeof(nome_host)); if ( err == SOCKET_ERROR) fprintf(stderr, "Gesthostname ERRORE : %d", WSAGetLastError()); printf("Il nome dell' host e' : %s\n", nome_host); host = gethostbyname(nome_host); if ( host == NULL) printf("GetHostByNAme ERRORE : %d", WSAGetLastError()); else { while ( host->h_addr_list[i]) { printf("%s\n",inet_ntoa(*((struct in_addr*)host->h_addr_list[i]))); i++; } } system("PAUSE"); return 0; }
codice:[Linker error] undefined reference to `WSAStartup@8' [Linker error] undefined reference to `WSAGetLastError@0' [Linker error] undefined reference to `gethostname@8' [Linker error] undefined reference to `WSAGetLastError@0' [Linker error] undefined reference to `gethostbyname@4' [Linker error] undefined reference to `WSAGetLastError@0' [Linker error] undefined reference to `inet_ntoa@4'
"Non può piovere per sempre" Il Corvo
Forza Vigor!
Beh ... allora, prima dovresti studiare la programmazione di rete (cominciando magari dai concetti di base del TCP) altrimenti non farai altro che fare copia-incolla di codice senza capirlo ...Originariamente inviato da MrX87
ma per me che sono totalmente all'oscuro in questo campo della programmazione...
ma onestamente a me non funziona niente...sarà che sbaglio a compilare...perchè mi da questi errori:
[/QUOTE]codice:[Linker error] undefined reference to `WSAStartup@8' [Linker error] undefined reference to `WSAGetLastError@0' [Linker error] undefined reference to `gethostname@8' [Linker error] undefined reference to `WSAGetLastError@0' [Linker error] undefined reference to `gethostbyname@4' [Linker error] undefined reference to `WSAGetLastError@0' [Linker error] undefined reference to `inet_ntoa@4'
Quegli errori, come potrai leggere, indicano che il linker non trova la libreria relativa a quella funzione. Devi indicare al tuo compilatore (quale usi?) il nome di tale libreria e poi ricompilare.
No MP tecnici (non rispondo nemmeno!), usa il forum.
chiedo scusa per l'erroraccio di italiano...comunque...ritornando alla programmazione...bhè si sarebbe corretto che iniziassi a studiare la programmazione di rete anche se in questo momento ho molte materie dell'università che non parlando di programmazione, in quanto queste cose le studierò l'anno prossimo...tornado a noi, come compilatore uso il DevC++, e poi non so quale libreria devo inlcudere!
grazie ancora
"Non può piovere per sempre" Il Corvo
Forza Vigor!
Se non erro dovresti linkare il programma con la libreria wsock32.lib
Per il devcpp mi sembra che sia la
libws2_32.a
No MP tecnici (non rispondo nemmeno!), usa il forum.
ma quindi devo includere questa libreria...e l'inclusione devo farla come includo qualsiasi libreria? poi non capisco...perchè è di estensione .a??Per il devcpp mi sembra che sia la
libws2_32.a
oppure si fa in modo diverso??codice:#include <libws2_32.a>
perdonate la mia ignoranza in questo ambito!
"Non può piovere per sempre" Il Corvo
Forza Vigor!