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);
}