Autor
|
Tema: Comunicar una aplicacion con otra(en la misma pc)? (Leído 7,706 veces)
|
Destro-
Desconectado
Mensajes: 66
www.onlyarg.com.ar
|
Holas . Se puede hacer eso?.Tuve buscando pero no encontre nada para c/c++,era para otro lenguaje :S. Si se puede me dan un ejemplo . Grax de antemano .
|
|
|
En línea
|
|
|
|
Leber
Desconectado
Mensajes: 338
"Fracta, non verba"
|
|
|
|
En línea
|
"Solo los tontos carecen de preucupaciones." Johann Wolfgang Goethe
|
|
|
Khronos14
Desconectado
Mensajes: 443
A lie is a lie
|
Sockets, FileMappings, utilizando la API SendMessage..
Saludos.
|
|
|
En línea
|
|
|
|
Garfield07
Desconectado
Mensajes: 1.121
¡Este año voy a por todas! JMJ 2011
|
http://foro.elhacker.net/programacion_cc/como_sacar_una_ip_code-t299839.0.html#ixzz1CMjbGpRLEso seria un server. Para el client usaria hK 2.0, tmb mio, pero no lo tengo aqui. Si esta noche no puedo en mi casa, mañana te lo cuelgo y te mando un PM... Recuerda retocar el code un poquito El hK 2.0 tiene una funcion de escucha y otra de conex. Lo puedes usar para los dos: ./hK vl 31337 ./hK vc 127.0.0.1 31337
Van perfectamente, aunque si en uno cierras la conex. el otro queda abierto hasta que mandas un mensaje
|
|
|
En línea
|
* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente. * No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado. * Si compila esta bien, si arranca es perfecto. ¡Wiki elhacker.net!Un saludo
|
|
|
Destro-
Desconectado
Mensajes: 66
www.onlyarg.com.ar
|
gracias a todos ,voy a usar socket
|
|
« Última modificación: 29 Enero 2011, 16:54 pm por Destro- »
|
En línea
|
|
|
|
Garfield07
Desconectado
Mensajes: 1.121
¡Este año voy a por todas! JMJ 2011
|
Perdona la tardanza... Tienes ante ti el hK 2.0, ni más ni menos jeje... ¿Y que estabas usando? Claro que tienes que usar sockets! #include <time.h> //Hora #include <stdio.h> //Funciones basicas entrada/salida #include <string.h> //StrCmp #include <stdlib.h> //Exit y otras #include <arpa/inet.h> //struct sockaddr_in #include <sys/socket.h> //Socket, Connect... struct sockaddr_in host, client; //Declaraciones int a=sizeof (struct sockaddr); char buffer [1024]; int cont = 2; int newsock; int sockfd; int k = 0; int listens (int port); //Funciones int conect (char *IP, int port); int scan (char *IP); int times () //Esta funcion escribira la fecha en pantalla... { struct tm *ahora; char buffer [40]; ahora = (struct tm *)localtime ((const time_t *)&now ); strftime (buffer , 40, "%d/%m/%Y %H:%M:%S" , ahora ); return 0; } int finalizar (int state) //Esta funcion detendra el programa en caso de problemas... { close (sockfd); if (state == 1) { printf ("Ocurrio un error en tiempo de ejecucion...\n"); } } int help () //Mal uso de la linea de comandos... { printf ("Use:\thK <options> <target_ip // port> [port]\n"); printf ("Options:+d // +v [Daemon // Verbose]\n"); printf ("\t+l // +c // +z [Listen // Connect // Scan]\n\n"); printf ("\t./hK -l <port>\n"); printf ("\t./hK -c <target_ip> <port>\n"); printf ("\t./hK -z <target_ip>\n\n"); printf ("Exp:\t./hK dl 31337\n"); printf ("\t./hK vc 192.168.0.1 31337\n"); printf ("\t./hK vz 192.168.0.1\n\n"); } int main (int argc, char *argv []) { struct tm *ahora; char hora [40]; strftime (hora , 40, "%d/%m/%Y %H:%M:%S" , ahora ); printf ("hK 2.0 - By Sagrini (2010) - %s\n", hora ); //Esto escribira la presentacion. if (argc < 3 || argc > 4) help (); //Diferentes opciones y mal uso de linea de comandos. if (strlen (argv [1]) != 2) help (); if (argv [1][0] != 'd' && argv [1][0]!= 'v') help (); if (argv [1][1] != 'l' && argv [1][1]!= 'c' && argv [1][1]!= 'z') help (); if (argv [1][1] == 'l' && argv [2] == NULL) help (); if (argv [1][1] == 'c' && argv [3] == NULL) help (); if (argv [1][1] == 'z' && argv [2] == NULL) help (); if (argv [1][0] == 'd') daemon (1, 0); if (argv [1][1] == 'l') listens (atoi (argv [2])); if (argv [1][1] == 'c') conect (argv [2], atoi (argv [3])); if (argv [1][1] == 'z') scan (argv [2]); return 0; } int listens (int port) //Esta funcion esperara una conexion y printara todo lo que reciba... { if ((sockfd=socket (2, 1, 0))==1) finalizar (1); host.sin_port=htons(port); host.sin_family=AF_INET; host.sin_addr.s_addr=0; if(bind(sockfd,(struct sockaddr*)&host,sizeof(host))==-1) finalizar (1); if(listen(sockfd,5)==-1) finalizar (1); if((newsock=accept(sockfd, (struct sockaddr*)&client, &a))==-1) finalizar (1); times (); printf ("Got connection from %s:%d\n", inet_ntoa (client. sin_addr), ntohs (client. sin_port)); close (sockfd); int ID = fork (); if (ID != 0) { do { fgets (buffer , 1024, stdin ); cont =send (newsock , &buffer , strlen (buffer ), 0); } while (cont>1); close (newsock); close (sockfd); printf ("Finishing connection with %s:%d\n\n", inet_ntoa (client. sin_addr), ntohs (client. sin_port)); } else { cont=recv (newsock, &buffer, 1024, 0); while (cont>1) { buffer [cont-1]='\0'; printf ("RECV %d bytes: %s \n", cont , buffer ); cont=recv (newsock, &buffer, 1024, 0); } close (newsock); close (sockfd); } finalizar (0); } int conect (char *IP, int port) //Se conecta a una IP y a su puerto determinado para mandar datos... { if ((sockfd=socket (2, 1, 0))==1) finalizar (1); host.sin_port=htons(port); host.sin_family=AF_INET; host.sin_addr.s_addr=inet_addr (IP); if((connect (sockfd, (struct sockaddr*)&host, sizeof (host)))==-1) finalizar (1); times (); printf ("Got connection with %s:%d\n", inet_ntoa (host. sin_addr), ntohs (host. sin_port)); int ID = fork (); if (ID != 0) { do { fgets (buffer , 1024, stdin ); cont =send (sockfd , &buffer , strlen (buffer ), 0); } while (cont>1); close (sockfd); printf ("Finishing connection with %s:%d\n\n", inet_ntoa (host. sin_addr), ntohs (host. sin_port)); } else { cont=recv (sockfd, &buffer, 1024, 0); while (cont>1) { buffer [cont-1]='\0'; printf ("RECV %d bytes: %s \n", cont , buffer ); cont=recv (sockfd, &buffer, 1024, 0); } close (sockfd); } finalizar (0); } int scan (char *IP) //Sencillo escaner de puertos. { host.sin_addr.s_addr=inet_addr (IP); host.sin_family=AF_INET; for (cont = 0; cont < 65535; cont ++) { if ((sockfd=socket (2, 1, 0))==1) finalizar (1); host.sin_port = htons (cont); if (connect (sockfd, (struct sockaddr*)&host, sizeof (host)) != -1) { printf ("Port %d open\n", cont ); k++; } close (sockfd); } if (k == 0) printf ("All ports closed...\n"); else printf ("%d port(s) open(s)...\n", k ); finalizar (0); }
|
|
|
En línea
|
* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente. * No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado. * Si compila esta bien, si arranca es perfecto. ¡Wiki elhacker.net!Un saludo
|
|
|
Destro-
Desconectado
Mensajes: 66
www.onlyarg.com.ar
|
jeje xD,lastima q no me va a funcionar de 1 ,fork no funca en dev c++ :S,pero me va a servir para mejorar lo q tengo (Y). +Karma
|
|
|
En línea
|
|
|
|
Garfield07
Desconectado
Mensajes: 1.121
¡Este año voy a por todas! JMJ 2011
|
El otro dia lo pase a Windows, para tu suerte. Voy a ver si no lo borre jeje... Suerte que tienes!!!Bueno, cabe decir que como lo pase en unos minutos le tuve que borrar unas cosillas. Ahora si escuchas no puedes mandar mensajes, solo recibir. Igual, si te conectas no recibes. Esto se debe a que le tengo que hacer un arreglillo para que pueda abrir dos procesos y subdivir el programa... Evidentemente tienes mucho que retocar, pero sigue funcionando asi: hK vl 31337 y hK vc 127.0.0.1 31337
#include <time.h> //Hora #include <stdio.h> //Funciones basicas entrada/salida #include <string.h> //StrCmp #include <stdlib.h> //Exit y otras #include <winsock2.h> //Socket, Connect... struct sockaddr_in host, client;//Declaraciones int a=sizeof (struct sockaddr); char buffer [1024]; int cont = 2; SOCKET newsock; SOCKET sockfd; int k = 0; int listens (int port); //Funciones int conect (char *IP, int port); int scan (char *IP); int times () //Esta funcion escribira la fecha en pantalla... { struct tm *ahora; char buffer [40]; ahora = (struct tm *)localtime ((const time_t *)&now ); strftime (buffer , 40, "%d/%m/%Y %H:%M:%S" , ahora ); return 0; } int finalizar (int state) //Esta funcion detendra el programa en caso de problemas... { closesocket (sockfd); if (state == 1) { printf ("Ocurrio un error en tiempo de ejecucion...\n"); } } int help () //Mal uso de la linea de comandos... { printf ("Use:\thK <options> <target_ip // port> [port]\n"); printf ("\t-l // -c // -z [Listen // Connect // Scan]\n\n"); printf ("\t./hK -l <port>\n"); printf ("\t./hK -c <target_ip> <port>\n"); printf ("\t./hK -z <target_ip>\n\n"); printf ("Exp:\t./hK -l 31337\n"); printf ("\t./hK -c 192.168.0.1 31337\n"); printf ("\t./hK -z 192.168.0.1\n\n"); } int main (int argc, char *argv []) { WSADATA wsa; WSAStartup(MAKEWORD(2,2),&wsa); struct tm *ahora; char hora [40]; strftime (hora , 40, "%d/%m/%Y %H:%M:%S" , ahora ); printf ("hK 2.0 - By Sagrini (2010) - %s\n", hora ); //Esto escribira la presentacion. if (argc < 3 || argc > 4) help (); //Diferentes opciones y mal uso de linea de comandos. if (strlen (argv [1]) != 2) help (); if (argv [1][0] != '-') help (); if (argv [1][1] == 'l' && argv [2] == NULL) help (); if (argv [1][1] == 'c' && argv [3] == NULL) help (); if (argv [1][1] == 'z' && argv [2] == NULL) help (); if (argv [1][1] == 'l' && argv [3] != NULL) help (); if (argv [1][1] == 'z' && argv [3] != NULL) help (); if (argv [1][1] == 'l') listens (atoi (argv [2])); if (argv [1][1] == 'c') conect (argv [2], atoi (argv [3])); if (argv [1][1] == 'z') scan (argv [2]); return 0; } int listens (int port) //Esta funcion esperara una conexion y printara todo lo que reciba... { if ((sockfd=socket (2, 1, 0))==1) finalizar (1); host.sin_port=htons(port); host.sin_family=AF_INET; host.sin_addr.s_addr=0; if(bind(sockfd,(struct sockaddr*)&host,sizeof(host))==-1) finalizar (1); if(listen(sockfd,5)==-1) finalizar (1); if((newsock=accept(sockfd, (struct sockaddr*)&client, &a))==-1) finalizar (1); times (); printf ("Got connection from %s:%d\n", inet_ntoa (client. sin_addr), ntohs (client. sin_port)); closesocket (sockfd); cont=recv (newsock, buffer, 1024, 0); while (cont>1) { buffer [cont-1]='\0'; printf ("RECV %d bytes: %s \n", cont , buffer ); cont=recv (newsock, buffer, 1024, 0); } closesocket (newsock); closesocket (sockfd); printf ("Finishing connection with %s:%d\n\n", inet_ntoa (client. sin_addr), ntohs (client. sin_port)); finalizar (0); } int conect (char *IP, int port) //Se conecta a una IP y a su puerto determinado para mandar datos... { if ((sockfd=socket (2, 1, 0))==1) finalizar (1); host.sin_port=htons(port); host.sin_family=AF_INET; host.sin_addr.s_addr=inet_addr (IP); if((connect (sockfd, (struct sockaddr*)&host, sizeof (host)))==-1) finalizar (1); times (); printf ("Got connection with %s:%d\n", inet_ntoa (host. sin_addr), ntohs (host. sin_port)); do { fgets (buffer , 1024, stdin ); cont =send (sockfd , buffer , strlen (buffer ), 0); } while (cont>1); closesocket (sockfd); printf ("Finishing connection with %s:%d\n\n", inet_ntoa (host. sin_addr), ntohs (host. sin_port)); finalizar (0); } int scan (char *IP) //Sencillo escaner de puertos. { host.sin_addr.s_addr=inet_addr (IP); host.sin_family=AF_INET; for (cont = 0; cont < 65535; cont ++) { if ((sockfd=socket (2, 1, 0))==1) finalizar (1); host.sin_port = htons (cont); if (connect (sockfd, (struct sockaddr*)&host, sizeof (host)) != -1) { printf ("Port %d open\n", cont ); k++; } else printf ("Port %d close\n", cont ); closesocket (sockfd); } if (k == 0) printf ("All ports closed...\n"); else printf ("%d port(s) open(s)...\n", k ); finalizar (0); }
Suerte! Recuerda que el code es mio, y se presento en un concurso...
|
|
|
En línea
|
* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente. * No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado. * Si compila esta bien, si arranca es perfecto. ¡Wiki elhacker.net!Un saludo
|
|
|
Destro-
Desconectado
Mensajes: 66
www.onlyarg.com.ar
|
Grax ,ya casi termino lo que toy haciendo xD.
|
|
|
En línea
|
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
Sagrini, creo que antes de gastar memoria deberías de checar si hay o no argumentos. int main (int argc, char *argv []) { struct tm *ahora; char hora [40]; strftime (hora , 40, "%d/%m/%Y %H:%M:%S" , ahora ); printf ("hK 2.0 - By Sagrini (2010) - %s\n", hora );
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
ejecutar una aplicacion dentro de otra
« 1 2 3 4 »
Programación Visual Basic
|
abel_c_b
|
32
|
18,331
|
2 Junio 2008, 22:51 pm
por abel_c_b
|
|
|
Leer datos de otra aplicacion (VB.NET)
.NET (C#, VB.NET, ASP)
|
elmaro
|
5
|
9,631
|
14 Enero 2009, 02:03 am
por seba123neo
|
|
|
Comunicarme con otra aplicación web
Programación Visual Basic
|
varton
|
2
|
3,306
|
8 Febrero 2011, 16:32 pm
por agus0
|
|
|
Comunicar aplicación con el exterior sin abrir puertos, es posible?
Software
|
z3nth10n
|
1
|
1,348
|
31 Enero 2017, 20:18 pm
por engel lex
|
|
|
Acceder a otra PC en la misma lan
« 1 2 »
Redes
|
kraverer
|
10
|
6,477
|
10 Mayo 2017, 16:30 pm
por kraverer
|
|