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

Socket Datagram


gdlm

Pergunta

Ola pessoal, estou com um pequeno problema com socket datagram , se alguém puder me explicar a mensagem de erro e os avisos , em especial o ultimo, ficaria muito agradecido

Codigo:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>


int main(int argc, char *argv[]){
    int sockfd;
    struct sockaddr_in dest;
    char msg;

    msg = "Teste";

    if((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1){
    perror("socket");
    exit(1);
    }

    dest.sin_family = AF_INET;
    dest.sin_port = htons(argv[2]);
    dest.sin_addr = inet_addr(argv[1]);
    memset(&(dest.sin_zero), '',8);
   
    sendto(sockfd,msg,strlen(msg),0,(struct sockaddr *)&dest, sizeof(struct sockaddr));

    return 0;
}
E quando tento compilar:
gabriel@gabriel-laptop:~/Desktop$ gcc dgram.c -o dgram -Wall
dgram.c: In function ‘main’:
dgram.c:17:9: warning: assignment makes integer from pointer without a cast [enabled by default]
dgram.c:25:5: warning: passing argument 1 of ‘htons’ makes integer from pointer without a cast [enabled by default]
/usr/include/netinet/in.h:370:17: note: expected ‘uint16_t’ but argument is of type ‘char *’
dgram.c:26:19: error: incompatible types when assigning to type ‘struct in_addr’ from type ‘in_addr_t’
dgram.c:29:5: warning: passing argument 1 of ‘strlen’ makes pointer from integer without a cast [enabled by default]
/usr/include/string.h:399:15: note: expected ‘const char *’ but argument is of type ‘char’
dgram.c:29:77: warning: passing argument 2 of ‘sendto’ makes pointer from integer without a cast [enabled by default]
/usr/include/x86_64-linux-gnu/sys/socket.h:155:16: note: expected ‘const void *’ but argument is of type ‘char’

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

O primeiro problema que vejo é com sua mensagem.

Ela tem que alocar memória e ser inicializada pelo texto "Teste". Infelizmente, não dá pra fazer do jeito que você está fazendo no C.

Um fix simples para isso seria:

char msg[] = "Teste";

A variável msg terá 6 bytes alocados para ela. 5 do teste + 1 do NULL no final da string.

Sobre o código de rede, sinto que não posso te ajudar muito nesse aspecto...

Eu recomendaria ler um pouco desse guia: http://beej.us/guide/bgnet/output/html/singlepage/bgnet.html

Abraços!

Link para o comentário
Compartilhar em outros sites

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,3k
×
×
  • Criar Novo...