seja bem vindo ao forum eof, caso nao seja cadastrado se cadastre para poder visualizar todo o conteudo ^^

Participe do fórum, é rápido e fácil

seja bem vindo ao forum eof, caso nao seja cadastrado se cadastre para poder visualizar todo o conteudo ^^
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Você não está conectado. Conecte-se ou registre-se

[tutorial] socket em c - converter host para ip (windows)

Ir para baixo  Mensagem [Página 1 de 1]

Kodo no Kami

Kodo no Kami
master
master

nos tutoriais anteriores eu usei como exemplo o ip para usar host ao inves do ip tem que converte-lo, para isso usamos a estrutura hostent e a funçao gethostbyname, no exemplo abaixo eu declarei a biblioteca winsock2.h depois declarei a estrutura tambem ativei o serviço WSA

Código:
#include <stdio.h>
#include <winsock2.h>

int main(int argc, char *argv[])
{
    struct hostent *host;
   
    WSADATA wsa;
    WSAStartup(MAKEWORD(2,0),&wsa);
}

agora agente atribui a funçao gethostbyname a nossa estrutura, tambem passamos como argumento o host na funçao (sem o protocolo http no host)

Código:
#include <stdio.h>
#include <winsock2.h>

int main(int argc, char *argv[])
{
    struct hostent *host;
   
    WSADATA wsa;
    WSAStartup(MAKEWORD(2,0),&wsa);
   
    host = gethostbyname("endoffile.umforum.net");
}

agora so agente ler os atributos da estrutura, nela tem o atributo h_name q o host, tem o h_addr q e o primeiro ip, h_addr_list q e uma array q contem todos os ips do host, tem h_length q mostra se o ip e ipv4 ou ipv6, tem mais um que nao to lembrando XD, para exibir o h_name basta exibir ele como string

Código:
#include <stdio.h>
#include <winsock2.h>

int main(int argc, char *argv[])
{
    struct hostent *host;
   
    WSADATA wsa;
    WSAStartup(MAKEWORD(2,0),&wsa);
   
    host = gethostbyname("endoffile.umforum.net");
   
    printf("%s",host->h_name);
}

para exibir o h_length e um tipo inteiro

Código:
#include <stdio.h>
#include <winsock2.h>

int main(int argc, char *argv[])
{
    struct hostent *host;
   
    WSADATA wsa;
    WSAStartup(MAKEWORD(2,0),&wsa);
   
    host = gethostbyname("endoffile.umforum.net");
   
    printf("%d",host->h_length);
}

agora o h_addr q e o ip agente tem q converter ele para string, para isso usamos a funçao inet_ntoa, passamos como argumento um ponteiro depois ele tambem usamos typecast para converter para a "struct in_addr"

Código:
#include <stdio.h>
#include <winsock2.h>

int main(int argc, char *argv[])
{
    struct hostent *host;
   
    WSADATA wsa;
    WSAStartup(MAKEWORD(2,0),&wsa);
   
    host = gethostbyname("endoffile.umforum.net");
   
    printf("%s",inet_ntoa(*((struct in_addr *)host->h_addr)));
}

pronto conseguimos o ip atraves do host, tambem podemos usar o array host_addr_list para ver os outros ips

Código:
#include <stdio.h>
#include <winsock2.h>

int main(int argc, char *argv[])
{
    struct hostent *host;
   
    WSADATA wsa;
    WSAStartup(MAKEWORD(2,0),&wsa);
   
    host = gethostbyname("endoffile.umforum.net");
   
    printf("%s",inet_ntoa(*((struct in_addr *)host->h_addr_list[2])));
}

pronto assim termina mais um tutorial ^^

by hacker fts315

https://endoffile.umforum.net

Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos