2016-05-25 1 views
2

Je Tring utiliser inet_ntoa fonction écrire le code suivant:'inet_ntoa' non déclaré erreur

printf("Got connection from: %s:%d\n", inet_ntoa(cli_addr.sin_addr.s_addr), cli_addr.sin_port); 

En utilisant ce qui suit comprend:

#include <sys/socket.h> 
#include <netinet/in.h> 
#include <arpa/inet.h> 

Mais, en utilisant g ++/gcc I » m toujours obtenir l'erreur:

error: ‘inet_ntoa’ was not declared in this scope

Si je commente cette ligne, le code est très bien.

Exécution sous Ubuntu12.04.

Quelqu'un peut-il me dire ce que j'ai manqué?

Merci!

+0

compilateur utilisez-vous? J'ai compilé votre code correctement sur g ++/gcc 5.1 – shrike

+1

OT: 'sin_port' est disponible dans l'ordre des octets du réseau. Vous voulez placer l'appel dans 'ntoh()' pour imprimer le numéro de port en utilisant (l'ordre des octets hôte plus lisible ;-). – alk

+0

J'ai compilé sous g ++ 4.6.3; @shrike – Ron

Répondre

3

De man inet_ntoa il semble que vous devez définir _BSD_SOURCE avant d'inclure les en-têtes:

#define _BSD_SOURCE 
#include <sys/socket.h> 
#include <netinet/in.h> 
#include <arpa/inet.h>