eres grande ch3m4
funciona perfecto
seguro te tomo mucho tiempo encontrar el problema
muchas gracias
como agradecimiento te contare de k se trata todo esto
hice una aplicación para leer diccionarios offline (de la k estoy orgulloso XD)
queria k la ventana venga al frente con una combinación de teclas. pero java no detecta las teclas sin la ventana
la opción era hacer una librería en C
:/
así k lo mas cercano fue configurar mi gnome para ejecutar " java -jar /home/panda/dic.jar"
al ejecutarse el una nueva instancia de fija si el puerto esta libre. si esta ocupado envia una cadena
la instancia k ya se esta ejecutando escucha en un hilo y cuando recibe la cadena correcta pone la ventana en frente con "setVisible(True)"
sufrí bastante para hacerlo funcionar los sockets en java. pero fue divertido
ahora haré lo mismo en la version k estoy "traduciendo" a python
dejare la versión de java, tal ves a alguien le sirva y cuando la versión de python funcione bien la pondré tambien
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import javax.swing.JFrame;
public class Main {
static ServerSocket SERVER_SOCKET;
static Socket socket;
static DataInputStream dataInput;
static DataOutputStream dataOutput;
public static void main(String[] args) {
try {
SERVER_SOCKET = new ServerSocket(1334);//si ya se esta ejecutando el puerto estara ocupado
} catch (IOException x) {
System.out.println("puerto 1334 ocupado\n¿Otra instancia de la aplicación se está ejecutando?");
try{
System.out.println("enviando señal");//como ya se esta ejecutando solo hay k ponerlo al frente
socket = new Socket("localhost", 1334);//conectarse al puerto
dataOutput = new DataOutputStream(socket.getOutputStream());//esta tonteria es necesaria en java¬¬
dataOutput.writeUTF("kdjhfiufbd.Show!!!");//enviando orden para k le ventana se haga visible
socket.close();
}
catch(Exception e){e.printStackTrace();}
System.exit(0);//ya enviada la orden se detiene
}
ventana obj = new ventana();//llamar a la ventana principal
//obj.setVisible(true);
try{
if(args[0].equals("hide")){obj.setVisible(false);}else{obj.setVisible(true);}}// si revice un argumento "hide" la ventano no sera visible. cualquier otro argummento sera ignorado
catch(Exception e){obj.setVisible(true);}//sin arguemntos, visible
while (true){//la vetana principal ya esta funcionando y ahora escuchara cuando se le ordene ir al frente
try{
Socket cliente = SERVER_SOCKET.accept();//espera k algo se coneccte
dataInput = new DataInputStream(cliente.getInputStream());
String text = dataInput.readUTF();//espera a recibir una orden
//System.out.println(text);
if (text.equals("kdjhfiufbd.Show!!!")){obj.setVisible(true);}//se asegura k la orden sea de la misma aplicacion y pone la ventana al frente
}
catch(Exception e){e.printStackTrace();}
}
}
}
> Date: Wed, 29 Aug 2012 02:04:08 +0200