begin process at 2012 05 29 03:43:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Linux

 > 

Réseau & Internet

 > 

gethostbyname


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

gethostbyname

jeudi 25 décembre 2008 à 23:26:22 | gethostbyname

BloP68

Bonsoir tout le monde,

Je suis actuellement en train d'écrire un logiciel de chat.
Je souhaite récuperer l'adresse du serveur grâce à la fonction "gethostbyname".
Mais cette fonction me renvoi rien .

Je commence à être à court d'idées.
J'ai beau essayer avec 127.0.0.1 ou un nom de domaine.

Les erreurs renvoyer par perror et herror sont:

Unknown host
Connection timed out

Je vous remerci d'avance pour vos réponse.
____________________________________________________________________________
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <string.h>

int main()
{
struct hostent *addr_srv;
char ip[20];
char adresse[255];

fgets(adresse,255,stdin);
addr_srv = gethostbyname(adresse);
herror("");
perror("");
strncpy( ip, inet_ntoa( *((struct in_addr *)addr_srv->h_addr )), 15);
printf("IP=\"%s\"\n", ip);
return 0;
}
__________________________________________________________________________
vendredi 26 décembre 2008 à 17:47:15 | Re : gethostbyname

nanonavich

lol,

ca va jamais marcher comme ca!
tu dois demarer le socket avant!!!

WSAStartup(0x0101,&wsaDATA);
        socket_result = socket(PF_INET,SOCK_STREAM,0);
        server_ip = new char [strlen(ip)+1];
        strcpy(server_ip, ip);
        server_port = port;
        address.sin_family = AF_INET;
        address.sin_addr.s_addr = inet_addr(server_ip);
        address.sin_port = htons(server_port);

Vector_kiev
vendredi 26 décembre 2008 à 18:13:31 | Re : gethostbyname

BloP68

C'est sous linux. Il n'y à pas de de fonction WSA*******

Et la fonction fonctione très bien si je l'apelle comme ca:

                gethostbyname("google.com");
ou            gethostbyname("127.0.0.1");

Mais pas quand je lui passe une chaine de caractere en argument :(
vendredi 26 décembre 2008 à 18:15:13 | Re : gethostbyname

rt15

Membre Club Administrateur CodeS-SourceS

Salut,

Sache, jeune nanonavich, qu'il n'y a pas que Windows dans la vie. En l'occurrence, #include <sys/..>, cela implique clairement que l'on est pas sous windows.

Bon alors à l'arrache... Le but était de le faire marcher... voilà ce que ça me donne. Il faudrait tester les valeurs de retours. Je teste l'host A.root-servers.net, qui est un host un peu particulier du net, et qui a pour adresse 198.41.0.4.

Exemple complet d'utilisation dans la msdn... A adapter bien sûr !



#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <string.h>

int main()
{
  struct hostent *addr_srv;
  struct in_addr addr;

  addr_srv = gethostbyname("A.root-servers.net");

  addr.s_addr = *(u_long *) addr_srv->h_addr_list[0];
  printf("%s\n", inet_ntoa(addr));

  return 0;
}


 

vendredi 26 décembre 2008 à 18:21:31 | Re : gethostbyname

rt15

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !

Argh, messages croisés !

Quand tu fais gethostbyname("google.com");, tu lui passe ni plus ni moins... Qu'une chaîne de caractère.

Ton problème est que fgets met le retour chariot dans adresse. Comme ça ça marche :
Mais bon, à voir si c'est beau...


#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <string.h>

int main()
{
  struct hostent *addr_srv;
  struct in_addr addr;
  char adresse[255];
  int len;

  fgets(adresse, 255, stdin);
  len = strlen(adresse);
  adresse[len - 1] = 0;

  addr_srv = gethostbyname(adresse);

  addr.s_addr = *(u_long *) addr_srv->h_addr_list[0];
  printf("%s\n", inet_ntoa(addr));

  return 0;
}

vendredi 26 décembre 2008 à 18:45:16 | Re : gethostbyname

BloP68

Merci rt15,
Bien vu c'est bien ce "putin" de retour à la ligne faudra que j'étudi plus le man la prochaine fois.
Je te remerci encore une fois rt15.

Merci a nanovich c'est sympa mais bon ya pas que windows ;)

Hop bonnes fêtes les gars.


Cette discussion est classée dans : ip, include, adresse, addr, gethostbyname


Répondre à ce message

Sujets en rapport avec ce message

help!!!! Saisir adresse ip en C [ par yeager ] bonjourj'ai un petit problème pour saisir les informations sur mon adresse ip.J'ai un petit code tout simple qui devrait marcher....mais comme par has gethostbyname??? C++ [ par typhoun ] Salut,   Je dois utiliser une adresse IP pour me connecté à un serveur et pour cela j'utilise la fonction struct hostent* FAR gethostbyname(const char Recuperer ip a partir d'une adresse [ par _Jonathan ] Je cherche a recuperer l'ip d'un serveur (ftp ou http, n'importe)En fait, c'est pour un chat, le client trouve l'ip du serveur(cad mon pc) grace a l'a pb communication socket [ par skyman272 ] bonjourvoici un petit programme client/serveur pour un projet à l'insa (sous linux).Le programme client envoi un message au programme serveur qui lui Probleme changement d'adresse Ip dans ma socket [ par kingdom_slayer_666 ] Bonjour, Voila j'aimerais envoyer un packet UDP a diiferentes adresses Réseau (IP). En utilisant Builder 5 j ai créer ma socket dans une classe liée Envoi , reception et "analyse" d'un packet TCP [ par firemax ] Bonjour Avec un pote nous avons commencer un scanner de port pour en apprendre un peu plus sur la prog reseau en C . Mais une fois que nous avons eu récuparation IP [ par cyril4900 ] Bonjour, Voila je veux un code qui me récupère l'addresse IP de ma machine hote qui fonctionne sur Winows et LINUX. Et c'est la le problème car j'ai recuperer l'adresse ip derriere un routeur [ par ebooserge ] salut a tous,juste une petite question sur la prog reseau. j'aimerais savoir s'il existe une fonction qui permet de recuperer l'adresse IP publique du [Socket] decouvrir son IP Public [ par ikaro ] salut je voudrais faire un logiciel avec le socket qui te donne ton adresse IP Internet(non local).savez vous comment obtenir l'adresse IP Public??<im adresse ip et TidIcmpClient [ par mathieu57100 ] Bonjourcomment puis-je récupérer l'adresse ip d'un ordinateur distant en spécifiant son nom dans TIdIcmpClient->host ?merci d'avance.


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales