Ir para o conteúdo
fnds

Socket - ligar ao servidor atraves de dns

Mensagens Recomendadas

fnds    2
fnds

como foço para o cliente se ligar a um servidor através do dns, é que eu preciso de ligar ao meu pc, mas este tem um ip dinâmico, o que eu queria era ligar ao servidor usando um dns do no-ip, só vejo duas hipóteses ou detecto o ip a que pertence o dns, ou faço a ligação directamente, mas eu não sei como faze-las (nem se dão).

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Hipnoted    6
Hipnoted

Tens de fazer a resolução de nomes.

Podes usar a seguinte função:

void resolucao_nomes(char host[81])
{
struct sockaddr_in sin;
char *ptr, **pptr;
struct hostent *host_ptr;

if((host_ptr = gethostbyname(host)) == NULL)
{
	printf("Erro na resolucao de nomes!!\n");
	exit(-1);
}
else{
	pptr = host_ptr->h_addr_list;
	strcpy(ip,inet_ntoa(*(struct in_addr *)*host_ptr->h_addr_list));
}
}

Depois podes chamar da seguinte maneira:

char server[81];
char ip[16];
...
strcpy(server,"http://www.dominio.com");
...

resolucao_nomes(server); // em "ip" vai ficar o IP desse host

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
fnds    2
fnds

já agora..., como faço para o servidor poder comandar vários clientes ao mesmo tempo?, os clientes ligam-se todos, mas eu só consigo controlar o primeiro, sei que tenhjo de usar algo do género

list(nomeSock, númeroLigações);

mas a partir daqui não si o que fazer.... :)

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Hipnoted    6
Hipnoted

Suponho que estejas a usar TCP, tens de fazer da seguinte forma:

listen(sock,5);

Ou seja neste caso aceita 5 ligações em simultâneo. Depois tens de abrir um novo socket por cada cliente, fechando o que recebes-te:

newSock=accept(sock,(struct sockaddr *)&from, (void *)&ad1);

close(sock);

A partir daqui é tudo igual. :)

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade