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

Rat

sockets erro

3 mensagens neste tópico

ola, sou novo com sockets e tentei elaborar o seguinte codigo:

#include <stdio.h>
#include <sys/types.h> 
#include <sys/socket.h>
#include <netinet/in.h>

int main()
{

struct sockaddr_in serv_addr, cli_addr;

int n;
char str[256];
int sockfd;
int newsockfd;

sockfd= socket(AF_INET, SOCK_STREAM, 0);

bzero((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;

serv_addr.sin_addr.s_addr = INADDR_ANY;

serv_addr.sin_port = htons(10000);

bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr));
listen(sockfd,5);

newsockfd = accept(sockfd,(struct sockaddr *) &cli_addr, sizeof(cli_addr));
bzero(str, 256);
     write(newsockfd,"this is a test",14);

return(0);

}

mas sempre que me ligo ao servidor através de telnet ou dá-me segmention fault, ou entao nao faz nada...

alguém me explica o que esta mal?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

compila com -Wall para veres todos os teus warnings.

falta:

#include <unistd.h>

#include <strings.h>

para a inclusão da funcao write e bzero respectivamente.

a funcao bzero está a ficar deprecada,pelo que aconcelho a utilizaçao de memset.

o erro propriamente dito está no 3 parametro do accept. declara um int x

faz int x = sizeof(cli_addr);

e depois envia-o ( socklen_t *)&x

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