• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

SunShade

Problemas no uso de sockets

3 mensagens neste tópico

Bons dia pessoal! Eu tou aqui com um problema e precisava d ajuda . Eu tou a fazer um programa em C que esta a tratar das connecçoes a um server e uso o gethostbyname para caso de nao receber um IP e receber um nome .O gethostbyname retorna uma estrutura  struct hostent k contem la os ips dos nomes que quero me connectar num  char    **h_addr_list . O meu problema e que nao consigo passar da struct  hostent os ips para a struct  in_addr que contem um unsignedint  la dentro para guardar o IP. E que a socket recebe uma struct sockaddr_in para se connectar.Exemplo de codigo:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

struct sockaddr_in add_client;

struct hostent *hostptr;

if ((hostptr=gethostbyname(ip))==NULL  ){

    printf("gethostbyname error for host\n");

    return -1;

  }

 

add_client.sin_addr= *(hostptr -> h_addr);  //erro aki  ja tentei fzr um cast para (struct in_addr)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pelos vistos a estrutura devolve uma lista de endereços, estavas mesmo lá perto, não me perguntes porquê. Eu só fiz uma pesquisa rápida no google.

Tens aqui um exemplo:

http://www.retran.com/beej/gethostbynameman.html

Mas pelos vistos isso já é a forma antiga de fazer as coisas, parece que agora a forma de fazer isso é usando a função getaddrinfo()

http://www.retran.com/beej/getaddrinfoman.html

Se procurares no google por exemplos so uso dessa função encontras alguns, este pareceu-me mais facil de entender. Mas isto sou eu não pesco nada disto de sockets :S

http://www.codeguru.com/forum/archive/index.php/t-288150.html

Não te esqueças de consultar sempre a sempre confiável manpage

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora