Como descobrir meu ip em C?
Oi,
Qual funcao que eu uso pra descobrir meu ip em um programa em C? eu tentei usar o gethostbyname("localhost") mas ele vai retornar uma lista de varios 127.0.0.1!!!!
Uma outra forma poderia ser pegar o hostname com um getenv() e descobrir o IP apartir do nome. Tambem dava pra pegar das configuracoes do linux.
Mas o problema eh q eu quero q meu software seja portavel e q nao precise funcionar soh em linux!
Alguem tem alguma ideia?
Obrigado!
Como descobrir meu ip em C?
de cabeca eu num vo lembrar, dps preciso olha num programa q eu tinha feito, mas acho que com a include net.h tem uma funcao q faz isso, o problema vai ser vc determinar qual ip pegar no caso de ter 2 ou mais interfaces
Como descobrir meu ip em C?
eu procurei aqui e nao achei, o unico net.h q tem eh /usr/include/linux/net.h
o meu programa ta funcionando mas eu pego o nome pelo getenv() e descubro o ip por gethostbyname()
se tu tiver um tempinho da uma olhada ai no teu programa pra ver como tu fez!
obrigado!
Como descobrir meu ip em C?
demoro mas achei.... o meu eskema nao pega o endereco em si, mas acho que q com ele vc consegue descobrir:
esse eh o codigo:
Código :
/* Criando Socket de Conexao */
if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0 )
{
grava_log("Erro ao criar socket");
exit(errno);
}
/* Configurando a Estrutura do Socket */
bzero(&self, sizeof(self));
self.sin_family = AF_INET;
self.sin_port = htons(MY_PORT);
self.sin_addr.s_addr = INADDR_ANY;
/* Assumindo a Porta do Servidor */
if ( bind(sockfd, (struct sockaddr*)&self, sizeof(self)) != 0 )
{
grava_log("Erro ao Assumir a porta do Servidor");
exit(errno);
}
/* Ouvindo na Porta */
if ( listen(sockfd, 20) != 0 )
{
grava_log("Erro ao Ouvir na Porta");
exit(errno);
}
Esses são os includes:
Código :
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <errno.h>
#include <sys/wait.h>
#include <sys/socket.h>
#include <resolv.h>
#include <arpa/inet.h>
#include <errno.h>
#include <pthread.h>
#include <string.h>
#define MY_PORT 9999
#define MAXBUF 1024