Ir ao conteúdo

Posts recomendados

Postado

Olá Pessoal! Usando socket eu criei dois programas o cliente e o servidor. O programa funciona normalmente na rede local ele funciona com os seguintes endereços: 127.0.0.1(localhost) e 192.168.0.7(Meu IP na rede local). Como eu faço para esse Socket funciona com meu IP da net ou com meu DNS dinâmico? Quem puder me dar uma ajuda, por favor, serei muito grato. Eu já tentei de tudo, aqui é minha ultima chance de obter respostas.

S.O: Windows 8.1

IDE: CodeBlocks

 

Códigos usados abaixo:

 

//Cliente.c
//Includes
//*****************************************************************************
#include <winsock2.h>
#include <winsock.h>
#include <windows.h>
#include <stdio.h>
//*****************************************************************************

int main(){
    SetConsoleTitleA("Cliente Socket");

    //Declarando variaveis e estruturas
//*****************************************************************************
    SOCKET sock;
    struct sockaddr_in saddr;
    int cnet;
    int erro;
    struct hostent *host;
//*****************************************************************************


    //Iniciando a library
//*****************************************************************************
    WSADATA wsa;
    printf("\nInitialising Winsock...\n");
    if (WSAStartup(MAKEWORD(2,2),&wsa) != 0)
    {
        printf("Failed. Error Code : %d",WSAGetLastError());
        return 1;
    }
    printf("Initialised.\n");
//*****************************************************************************


    //Criando o socket
//*****************************************************************************
    //host = gethostbyname("134.20.209.66");//IP FALSO
    sock = socket(AF_INET, SOCK_STREAM, 0);
    if(sock == INVALID_SOCKET){
        MessageBox(NULL, "Invalid socket", "Erro", MB_OK);
        return 1;
    }
//*****************************************************************************


    //Dados da conexao;
//*****************************************************************************

    saddr.sin_family = AF_INET;
    //saddr.sin_addr = *(struct in_addr*)host->h_addr_list[0];
    saddr.sin_addr.s_addr = inet_addr("134.20.209.66");//IP FALSO
    saddr.sin_port = htons(120);
    printf("Nome: %s\n", host->h_name);
//*****************************************************************************


    //Conectando ao servidor
//*****************************************************************************

    cnet = WSAConnect(sock, (struct sockaddr*)&saddr, sizeof(saddr), NULL, NULL, NULL, NULL);
    if(cnet!=0){
        printf("Erro ao conectar\n");
        erro = WSAGetLastError();
        printf("\nErro: %i\n", erro);
    }
/*
    cnet = connect(sock, (struct sockaddr*)&saddr,sizeof(saddr));
    if(cnet==SOCKET_ERROR){
        MessageBox(NULL, "Erro connect", "Erro", MB_OK);
        erro = WSAGetLastError();
        printf("\nErro: %i\n", erro);
        //return 1;
    }
*/
    printf("Conectado ao servidor\n");
//*****************************************************************************


    //Mensagem para o servidor
//*****************************************************************************
    printf("Recebendo...\n");

//*****************************************************************************


    //Menssagem caso tenha erro
//*****************************************************************************

    erro = WSAGetLastError();
    printf("\nErro: %i\n", erro);
//*****************************************************************************


    //Fim do programa
//*****************************************************************************
    while(1);
    closesocket(sock);

}

 

Servidor.c
//Includes
//*****************************************************************************
#include <winsock2.h>
#include <winsock.h>
#include <windows.h>
#include <stdio.h>
//*****************************************************************************


int main(){

    system("title Servidor Socket");

    //Declarando variaveis e estruturas
//*****************************************************************************
    SOCKET sock;
    struct sockaddr_in saddr;
    int cnet, ind;
//*****************************************************************************


    //Iniciando a library
//*****************************************************************************
    WSADATA wsa;
    printf("\nInitialising Winsock...\n");
    if (WSAStartup(MAKEWORD(2,2),&wsa) != 0)
    {
        printf("Failed. Error Code : %d",WSAGetLastError());
        return 1;
    }
    printf("Initialised.\n");
//*****************************************************************************


    //Criando o socket
//*****************************************************************************
    sock = socket(AF_INET, SOCK_STREAM, 0);
    if(sock == INVALID_SOCKET){
        MessageBox(NULL, "Invalid socket", "Erro", MB_OK);
        return 1;
    }
//*****************************************************************************


    //Dados da conexao;
//*****************************************************************************
    saddr.sin_family = AF_INET;
    saddr.sin_addr.s_addr = INADDR_ANY;
    saddr.sin_port = htons(120);
//*****************************************************************************


    //Bind
//*****************************************************************************
    ind = bind(sock, (struct sockaddr*)&saddr, sizeof(saddr));
    if(ind == INVALID_SOCKET){
        MessageBox(NULL, "Erro bind", "Erro", MB_OK);
        return 1;
    }
//*****************************************************************************


    //Esperando o cliente
//*****************************************************************************
    printf("Aguardando Cliente...\n");
    listen(sock, 5);
//*****************************************************************************


    //Aceitar conexao
//*****************************************************************************
    SOCKET cliente;
    cliente = accept(sock, 0, 0);
    printf("Client conectado\n");
//*****************************************************************************


    //Menssagens e Loop
//*****************************************************************************
    printf("Enviando...\n");
    
//*****************************************************************************


    //Funcao caso tenha erro
//*****************************************************************************
    int erro;
    erro = WSAGetLastError();
    printf("\nErro: %i\n", erro);
//*****************************************************************************


    //Fim do programa
//*****************************************************************************
    closesocket(sock);
}

 

Postado

Eu ja tinha visto o firewall, ja habilitei dmz e outras coisas no roteador. Tambem ja desinstalei o anti-virus. Tenho medo de já ter tentado tudo.

Eu ja configurei o roteador e o modem ADSL que tenho. Não vim no forum por preguiça, mas é a ultima forma de obter informação, ja li muito código de outras pessoas na net sobre sockets, tambem ja vi muito pdf.Mas ate agora nada. não sei se tem algo bloqueando e se tiver não sei o que é.

Visitante
Este tópico está impedido de receber novas respostas.

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...