Tema destacado: Entra al canal IRC oficial de #elhacker.net
Autor
|
Tema: Conexión remota, problema al utilizar 2 procesos a la vez con cliente (Leído 1,902 veces)
|
chema200
Desconectado
Mensajes: 9
|
Hola muy buenas, pues escribo este post para que me deis algunas ideas para seguir con mi aplicación.
Os comento, mi aplicaciones está echa en java, es un cliente-Servidor que está echa con sockets e hilos, tengo un servidor al que se pueden conectar unos 10 clientes.
Cuando se conecta un cliente, creo un hilo para tal cliente, en el cual incluyo (DatainputStream,DataOutputStream,ObjectOutputStream,etc...) para la comunicación con el cliente.
Una vez establecida la conexión con un cliente, por ejemplo, tengo unas ventanas (Captura de pantalla del cliente y captura de teclas). Si utilizo la captura de pantalla va perfectamente, o si a su vez utilizo la captura de teclas también, siempre que pare una y encienda otra van de lujo.
El problema es cuando intento utilizar las dos ventanas a la vez sin parar nada, es decir quiero seguir capturando teclas y ver la pantalla remota, pues cuando las utilizo a la vez me casca un pete y mi pregunta es:
¿debo crear mas hilos a su vez por cada "ventana con el cliente" ? ¿O hay alguna otra forma que sepais? ¿Puede ser problema de mis DataImputs, DataOutputs.. ? Se que deberia de cerrarlos pero como los quiero utilizar a la vez no puedo cerrarlos.
También he mirado lo de sincronizar sockets,hilos, etc... pero prefiero informarme antes y ver las posibles soluciones.
Si alguien me puede ayudar con alguna idea lo agradeceré.
Gracias, saludos.
|
|
|
|
|
En línea
|
|
|
|
|
[Zero]
|
Si quieres ejecutar dos funciones simultaneamente, si, tendrás que crear un hilo para cada función, aunque yo te aconsejo lo siguiente, la mayoría de funciones no necesitan un nuevo hilo, vamos, que que la aplicación no pueda ver la pantalla y ver la webcam al mismo tiempo no es demasiado problema, puedes obligar a que se cierre una para iniciar la otra y no te complicas. Pero con el keylogger es diferente, pues siempre debe de estar capturando teclas. Yo te recomiendo que crees un hilo para el keylogger, que esté siempre capturando las teclas y guardandolas en un .txt, luego cuando quieres iniciar el keylogger desde el cliente, pues inicias otra instancia del keylogger para que a la vez de guardar las teclas en el txt, te las envie a ti, y luego una opción para recuperar lo que guardó en el .txt. Cuando quieras iniciar otra vez la captura de pantalla, cierras el hilo que te mandaba las teclas a ti y quedará activo el que guardaba los logs en el txt.
Saludos
|
|
|
|
|
En línea
|
“El Hombre, en su orgullo, creó a Dios a su imagen y semejanza.” Nietzsche
|
|
|
chema200
Desconectado
Mensajes: 9
|
Vale esa opción la contemplé, de dejar que sólo pueda abrir una ventana, pongamos que decido hacerlo así pero quiero implementar lo del keylogger.
Entonces cuando se conecta un cliente, además del hilo que creo para hacer las conexiones con él, tranferencias de imagenes, datos etc.. Creo uno nuevo, este nuevo que socket utilizaria el mismo no? es que no cojo la manera de hacerlo, si puedes dime la idea asi por lo alto y yo lo implemento. ¿Sería así?
Perdón por tanto preguntar, he hecho muchas cosas en JAVA pero es mi primera aplicacion con sockets e hilos.
Saludos y gracias.
|
|
|
|
|
En línea
|
|
|
|
Jaixon Jax
Desconectado
Mensajes: 855
|
Al momento de aceptar la conexion el so crea un identificador en memoria donde va ha escribir los datos mque entran y salen este identificador se conoce como SOCKET el puerto es el mismo pero son varios sockets cada cliente tienen su socket entonce en un thread escuchas peticiones de conexiones y cuando aceptas la conexion crea otro thread pasandole el socket para que escuche por dicho puerto y dicho socket .....
|
|
|
|
|
En línea
|
Tricalogo del buen forista: 1.- No postear en hilos de Politica, ni religion, ni feminismo ni Machismo ..... 2.- Nunca solicitar ayuda por MP a alguien del staf .... ellos nunca responden .... 3.- Aplaudir todos los "aportes" del staf aunque no los entiendas, o creas que no tienen importancia eso es buena onda ....
|
|
|
chema200
Desconectado
Mensajes: 9
|
Haber te voy a poner aquí la estructura que sigo, y lo que yo he entendido según lo que me has explicado y ya me dices.
Esto es lo que tengo yo ahora, te lo comento muy por encima: PARTE DEL SERVIDOR:
- Tengo un servidor que escucha peticiones, cuando se conecta un cliente crea un hilo para ese cliente (ClaseHiloServidor) y su correspondiente socket en esta clase. Este hilo es una clase con el método run que se encargar de recibir los datos y las "cosas" del cliente. PARTE DEL CLIENTE:
- Cliente que cuando arranca, crea un hilo en el cual tengo un case. Aquí recibo las ordenes de una clase del servidor, y según lo que reciba hace una cosa u otra, seguidamente envia a la (ClaseHiloServidor) lo pedido.
Esto es lo que tengo y ahora lo que yo he entendido de lo que me has explicado.
En la parte del servidor cuando creo un hilo y socket para el cliente creo un nuevo hilo, es decir, instancio una nueva clase que implemente Thread la cual va a recibir un socket, que será el mismo recibido en el primer hilo, y en esta clase es donde tengo q recoger los datos enviados para el keylogger.
¿Es así? y si es así, otra pregunta en el cliente lo dejo como está? o tengo que crear tambien otro nuevo hilo para lo del keylogger.
Saludos.
|
|
|
|
|
En línea
|
|
|
|
chema200
Desconectado
Mensajes: 9
|
Ya lo he entendido, he hecho una prueba y va de lujo, en el hilo q espera las onexiones de los "clientes" arranco un nuevo hilo (en este caso para el keylogger), el cual va a esperar las teclas del cliente. A este nuevo hilo le paso el sockets del cliente y va del carajo, muchas gracias por las respuestas.
Saludos.
|
|
|
|
|
En línea
|
|
|
|
|
|