Ir para conteúdo
Fórum Script Brasil
  • 0

Erro, ajuda


Bresolin

Pergunta

Boa tarde, tenho o seguinte código:

/*

* tcp-servidor.c

*/

#include <stdlib.h>

#include <unistd.h>

#include <stdio.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <string.h>

/*

* Server Main.

*/

main(int argc, char* argv[])

{

unsigned short port; /* porta usada pelo servidor */

char buf[81]; /* buffer para receber dados */

struct sockaddr_in client; /* informacao do endereco do cliente */

struct sockaddr_in server; /* informacao do endereco do servidor */

int s; /* socket para aceitar conexoes */

int ns; /* socket conectado ao cliente */

int namelen; /* tamanho do nome do cliente */

char retorno[81] = " Retorno ok";

char palavra1[81];

char palavra2[81];

/*

* Verifica os argumentos. So deve haver um: o numero da porta a ser usada.

*/

if (argc != 2)

{

fprintf(stderr, "Parametro(s) invalido(s) - uso correto:\n%s <numero_da_porta>\n", argv[0]);

exit(1);

}

/*

* Converte O argumento de ASCII para short.

*/

port = (unsigned short) atoi(argv[1]);

/*

* Cria um socket para aceitar conexoes.

*/

if ((s = socket(AF_INET, SOCK_STREAM, 0)) < 0)

{

perror("Socket()");

exit(2);

}

/*

* Liga o socket ao endereco do servidor.

*/

server.sin_family = AF_INET;

server.sin_port = htons(port);

server.sin_addr.s_addr = INADDR_ANY;

if (bind(s, (struct sockaddr *)&server, sizeof(server)) < 0)

{

perror("Bind()");

exit(3);

}

/*

* Espera por conexoes.

*/

if (listen(s, 1) != 0)

{

perror("Listen()");

exit(4);

}

/*

* Aceita uma conexao.

*/

namelen = sizeof(client);

if ((ns = accept(s, (struct sockaddr *)&client, ( socklen_t *)&namelen)) == -1)

{

perror("Accept()");

exit(5);

}

/*

* Recebe a mensagem em um novo socket.

*/

if (recv(ns, buf, sizeof(buf), 0) == -1)

{

perror("Recv()");

exit(6);

}

/*

* Imprime a mensagem.

*/

printf("\n\nMensagem: %s\n", buf);

/*

* Faz a inversão das palavras

*/

strcpy(palavra2, strtok(buf, " "));

strcpy(palavra1, strtok(NULL, " "));

/*

* Junta as palavras na nova ordem.

*/

retorno = strcat(palavra2, " ");

retorno = strcat(retorno, palavra1);

/*

* Retorna ao cliente o resultado da conta.

*/

if (send(ns, retorno, sizeof(retorno), 0) < 0)

{

perror("Send()");

exit(5);

}

/*

* Fecha os sockets.

*/

close(ns);

close(s);

}

quando mando compilar, retorna o seguinte erro:

$ gcc tcp-servidor-5.c -o server -lgdbm

tcp-servidor-5.c: In function ‘main’:

tcp-servidor-5.c:108: error: incompatible types in assignment

tcp-servidor-5.c:109: error: incompatible types in assignment

O erro seria aqui:

/*

* Junta as palavras na nova ordem.

*/

retorno = strcat(palavra2, " ");

retorno = strcat(retorno, palavra1);

alguém pode me dizer o q devo fazer?

Obrigado

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...