Ir ao conteúdo
  • Cadastre-se

C Socket na linguagem em C , mensagem não chega para o outro computador


lxNeos

Posts recomendados

 

O objetivo desses códigos é mandar uma mensagem pra outro computador através do seu ip , um código é quando a maquina recebe a mensagem (listener) e outro é pra quem manda a mensagem (talker) , os 2 códigos roda , mas a mensagem n chega no outro computador , o que estaria errado nos códigos ?

 

// talker.c -- a datagram "client" demo

#ifdef _WIN32 //Windows
int betriebssystem = 1;
#include <winsock2.h>
#include <ws2tcpip.h>
#include <iphlpapi.h>
#include <ws2def.h>
#pragma comment(lib, "ws2_32.lib")
#include <windows.h>
#include <io.h>
#include <stdio.h>
#else // Linux
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
int betriebssystem = 2;
#endif

/*
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
*/

#define SERVER_PORT 5000    // A porta onde os usuários estarão se conectando

int main(int argc, char *argv[])
{
    int sockfd;
    struct sockaddr_in their_addr; // endereço do servidor
    struct sockaddr_in my_addr;    // meu endereço 
    int numbytes;
    WSADATA wsaData;

    if (argc != 3) {
        fprintf(stderr,"uso: talker nome_do_host mensagem\n");
        exit(1);
    }
    
    // Inicializa a biblioteca Winsock
    if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
        fprintf(stderr, "Falha ao iniciar a biblioteca Winsock: %d\n", WSAGetLastError());
        exit(1);
    }

    //cria o socket
    if ((sockfd = socket(PF_INET, SOCK_DGRAM, 0)) == -1) {
        perror("talker: socket");
    }

    //preenchendo estrutura de endereçamento
    their_addr.sin_family = AF_INET;         
    their_addr.sin_port = htons(SERVER_PORT);	// porta do servidor
    inet_pton(AF_INET, "192.168.32.53", &their_addr.sin_addr); // IP do servidor
    memset(their_addr.sin_zero, '\0', sizeof their_addr.sin_zero); 

    // envia a mensagem para o servidor
    if ((numbytes = sendto(sockfd, argv[2], strlen(argv[2]), 0, (struct sockaddr *)&their_addr, sizeof their_addr)) == -1) {
        perror("talker: Olá mundo!");
        exit(1);
    }

    printf("talker: enviados %d bytes para %s\n", numbytes, argv[1]);
    close(sockfd);
    
    WSACleanup(); // Finaliza a biblioteca.

    return 0;
}

 

// talker.c -- a datagram "client" demo

#ifdef _WIN32 //Windows
int betriebssystem = 1;
#include <winsock2.h>
#include <ws2tcpip.h>
#include <iphlpapi.h>
#include <ws2def.h>
#pragma comment(lib, "ws2_32.lib")
#include <windows.h>
#include <io.h>
#include <stdio.h>
#else // Linux
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
int betriebssystem = 2;
#endif

/*
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
*/

#define SERVER_PORT 5000    // A porta onde os usuários estarão se conectando

int main(int argc, char *argv[])
{
    int sockfd;
    struct sockaddr_in their_addr; // endereço do servidor
    struct sockaddr_in my_addr;    // meu endereço 
    int numbytes;
    WSADATA wsaData;

    if (argc != 3) {
        fprintf(stderr,"uso: talker nome_do_host mensagem\n");
        exit(1);
    }
    
    // Inicializa a biblioteca Winsock
    if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
        fprintf(stderr, "Falha ao iniciar a biblioteca Winsock: %d\n", WSAGetLastError());
        exit(1);
    }

    //cria o socket
    if ((sockfd = socket(PF_INET, SOCK_DGRAM, 0)) == -1) {
        perror("talker: socket");
    }

    //preenchendo estrutura de endereçamento
    their_addr.sin_family = AF_INET;         
    their_addr.sin_port = htons(SERVER_PORT);	// porta do servidor
    inet_pton(AF_INET, "192.168.0.5", &their_addr.sin_addr); // IP do servidor
    memset(their_addr.sin_zero, '\0', sizeof their_addr.sin_zero); 

    // envia a mensagem para o servidor
    if ((numbytes = sendto(sockfd, argv[2], strlen(argv[2]), 0, (struct sockaddr *)&their_addr, sizeof their_addr)) == -1) {
        perror("talker: Olá mundo!");
        exit(1);
    }

    printf("talker: enviados %d bytes para %s\n", numbytes, argv[1]);
    close(sockfd);
    
    WSACleanup(); // Finaliza a biblioteca.

    return 0;
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!