Ir ao conteúdo

Posts recomendados

Postado

 

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

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!