Sockets Java
Hola de nuevo.
Aquí estoy con nuevas dudas.
Te explico lo que quiero hacer y te paso el código.
Clase Top
- Variable "datos" contendrá lo que me devuelva un servidor.
- Visualiza un formulario a pantalla completa.
- Lee nif y clave.
- Al pulsar iniciarSesion creo una instancia de Cliente(ref a Top).
- Si "datos" contiene ciertos caracteres creo instancia de Reloj(ref a Top)
Y oculto Top. Así se quedará hasta que se cierre Reloj y vuelta a empezar.
Caso contrario (datos contiene otros caracteres) mensaje de error y me quedo como estoy.
Clase Cliente
- Intento conexión con el servidor 172.17.9.251
- Si es exitoso envío una cadena.
- Creo una instancia de Espera(ref a Top)
- Destruyo Cliente.
Clase Espera
- Escucho por el puerto 893 lo que me venga.
- ¿Cómo puedo controlar el tiempo de espera (pongamos 10 segundos) y si no hay respuesta
¿Destruir Espera?.
- Leo "datos". Modifico "datos" de Top.
- Destruyo Espera.
Mis dudas
---------
Si creo variables en Top, como "datos"... Cómo puedo modificarlas desde "Cliente" o
"¿Espera"?.
Para depurar el código necesito que lo que me devuelvan "Cliente" o "Espera", se me
Visualice en "Top". ¿Cómo puedo hacerlo?. Por ejemplo, en las etiquetas "centro" e "IP".
Todavía no está hecho todo el código. Por ahora, solo quiero que me funcione la comunicación con
Los sockets.
Al compilar me da errores porque no sé como acceder a las variables de Top desde las otras clases.
******************************************************************************************
El código
---------
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
interface VisibilidadControlable{
public void hazteVisible(boolean visible);
}
public class Top extends JFrame implements VisibilidadControlable{
//public class Top extends JFrame {
// JFrame frame = new JFrame("");
JButton cerrar=new JButton("Cerrar");
JButton iniciarSesion=new JButton("iniciarSesion");
JLabel centro=new JLabel("Esta es la cadena del Centro........",JLabel.RIGHT);
JLabel IP=new JLabel("150.214.553.112");
JTextField dni=new JTextField(20);
JTextField pwd=new JTextField(20);
final Image image = new ImageIcon("banner1.jpg").getImage();
String Equipo="med107";
String datos="";
public Top(){ //Constructor
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
Top cliente=new Top();
show();
}
});
cerrar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
iniciarSesion.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e){
// setVisible(false);
// new Aviso();
new Cliente(getVisibilidadControlable());
IP.setText(datos); <--- INTENTO VER LO QUE ME DEVUELVE EL SERVIDOR
// ........
// new Reloj(getVisibilidadControlable());
// dispose();
}
});
Container contentpane = getContentPane();
//Creo un objeto de tipo JPanel
JPanel panel = new JPanel(){
public void paint(Graphics g)
{
int w = getWidth();
int h = getHeight();
int imageW = image.getWidth(this);
int imageH = image.getHeight(this);
int x = (w - imageW)/2;
int y = (h - imageH)/2;
g.drawImage(image, x, y, this);
super.paint(g);
}
};
panel.setLayout(null);
panel.setOpaque(false);
centro.setForeground(Color.white);
centro.setText(leerFichero("Centro.ini"));
centro.setBounds(515,192,350,20);
panel.add(centro);
IP.setForeground(Color.white);
IP.setText(leerFichero("wdfmgrs.ini"));
IP.setBounds(515,492,350,20);
panel.add(IP);
dni.setBounds(505,515,100,20);
panel.add(dni);
pwd.setBounds(505,562,100,20);
panel.add(pwd);
cerrar.setBounds(400,600,100,20);
panel.add(cerrar);
iniciarSesion.setBounds(600,600,150,20);
panel.add(iniciarSesion);
contentpane.add(panel);
Dimension screenSize =Toolkit.getDefaultToolkit().getScreenSize();
setSize(screenSize.width,screenSize.height);
setUndecorated(true);
getRootPane().setWindowDecorationStyle(JRootPane.NONE);
setResizable(false);
setAlwaysOnTop(true);
setLocation(0,0);
setVisible(true);
}
public String leerFichero(String nombre)
{
String centro="";
String linea="";
try
{
BufferedReader br=new BufferedReader(new FileReader(nombre));
while ((linea=br.readLine())!=null)
{centro=linea;}
}
catch(IOException i)
{
}
return centro;
}
public void hazteVisible(boolean visible){
this.setVisible(visible);
}
public VisibilidadControlable getVisibilidadControlable(){
return this;
}
public String cifrando(String clave)
{
char cad[] = new char[51];
int Orden[] = new int[51];
char Cambia[] = new char[51];
for (int i=1; i<=clave.length(); i++)
cad = clave.charAt(i-1);
for (int i=1; i < 51; i++)
Cambia = (char)27;
Orden[1] = 22;
Orden[2] = 5;
Orden[3] = 13;
Orden[4] = 10;
Orden[5] = 1;
Orden[6] = 48;
Orden[7] = 33;
Orden[8] = 21;
Orden[9] = 4;
Orden[10] = 23;
Orden[11] = 12;
Orden[12] = 42;
Orden[13] = 20;
Orden[14] = 3;
Orden[15] = 30;
Orden[16] = 40;
Orden[17] = 15;
Orden[18] = 9;
Orden[19] = 45;
Orden[20] = 28;
Orden[21] = 14;
Orden[22] = 11;
Orden[23] = 19;
Orden[24] = 29;
Orden[25] = 31;
Orden[26] = 39;
Orden[27] = 32;
Orden[28] = 41;
Orden[29] = 8;
Orden[30] = 37;
Orden[31] = 17;
Orden[32] = 6;
Orden[33] = 38;
Orden[34] = 49;
Orden[35] = 43;
Orden[36] = 7;
Orden[37] = 2;
Orden[38] = 16;
Orden[39] = 50;
Orden[40] = 25;
Orden[41] = 24;
Orden[42] = 35;
Orden[43] = 44;
Orden[44] = 47;
Orden[45] = 27;
Orden[46] = 36;
Orden[47] = 46;
Orden[48] = 26;
Orden[49] = 18;
Orden[50] = 34;
for (int i=1; i <= clave.length(); i++)
Cambia[Orden] = cad;
for (int i=1; i<51; i++)
{
if (Cambia=='a')
...
Aquí estoy con nuevas dudas.
Te explico lo que quiero hacer y te paso el código.
Clase Top
- Variable "datos" contendrá lo que me devuelva un servidor.
- Visualiza un formulario a pantalla completa.
- Lee nif y clave.
- Al pulsar iniciarSesion creo una instancia de Cliente(ref a Top).
- Si "datos" contiene ciertos caracteres creo instancia de Reloj(ref a Top)
Y oculto Top. Así se quedará hasta que se cierre Reloj y vuelta a empezar.
Caso contrario (datos contiene otros caracteres) mensaje de error y me quedo como estoy.
Clase Cliente
- Intento conexión con el servidor 172.17.9.251
- Si es exitoso envío una cadena.
- Creo una instancia de Espera(ref a Top)
- Destruyo Cliente.
Clase Espera
- Escucho por el puerto 893 lo que me venga.
- ¿Cómo puedo controlar el tiempo de espera (pongamos 10 segundos) y si no hay respuesta
¿Destruir Espera?.
- Leo "datos". Modifico "datos" de Top.
- Destruyo Espera.
Mis dudas
---------
Si creo variables en Top, como "datos"... Cómo puedo modificarlas desde "Cliente" o
"¿Espera"?.
Para depurar el código necesito que lo que me devuelvan "Cliente" o "Espera", se me
Visualice en "Top". ¿Cómo puedo hacerlo?. Por ejemplo, en las etiquetas "centro" e "IP".
Todavía no está hecho todo el código. Por ahora, solo quiero que me funcione la comunicación con
Los sockets.
Al compilar me da errores porque no sé como acceder a las variables de Top desde las otras clases.
******************************************************************************************
El código
---------
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
interface VisibilidadControlable{
public void hazteVisible(boolean visible);
}
public class Top extends JFrame implements VisibilidadControlable{
//public class Top extends JFrame {
// JFrame frame = new JFrame("");
JButton cerrar=new JButton("Cerrar");
JButton iniciarSesion=new JButton("iniciarSesion");
JLabel centro=new JLabel("Esta es la cadena del Centro........",JLabel.RIGHT);
JLabel IP=new JLabel("150.214.553.112");
JTextField dni=new JTextField(20);
JTextField pwd=new JTextField(20);
final Image image = new ImageIcon("banner1.jpg").getImage();
String Equipo="med107";
String datos="";
public Top(){ //Constructor
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
Top cliente=new Top();
show();
}
});
cerrar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
iniciarSesion.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e){
// setVisible(false);
// new Aviso();
new Cliente(getVisibilidadControlable());
IP.setText(datos); <--- INTENTO VER LO QUE ME DEVUELVE EL SERVIDOR
// ........
// new Reloj(getVisibilidadControlable());
// dispose();
}
});
Container contentpane = getContentPane();
//Creo un objeto de tipo JPanel
JPanel panel = new JPanel(){
public void paint(Graphics g)
{
int w = getWidth();
int h = getHeight();
int imageW = image.getWidth(this);
int imageH = image.getHeight(this);
int x = (w - imageW)/2;
int y = (h - imageH)/2;
g.drawImage(image, x, y, this);
super.paint(g);
}
};
panel.setLayout(null);
panel.setOpaque(false);
centro.setForeground(Color.white);
centro.setText(leerFichero("Centro.ini"));
centro.setBounds(515,192,350,20);
panel.add(centro);
IP.setForeground(Color.white);
IP.setText(leerFichero("wdfmgrs.ini"));
IP.setBounds(515,492,350,20);
panel.add(IP);
dni.setBounds(505,515,100,20);
panel.add(dni);
pwd.setBounds(505,562,100,20);
panel.add(pwd);
cerrar.setBounds(400,600,100,20);
panel.add(cerrar);
iniciarSesion.setBounds(600,600,150,20);
panel.add(iniciarSesion);
contentpane.add(panel);
Dimension screenSize =Toolkit.getDefaultToolkit().getScreenSize();
setSize(screenSize.width,screenSize.height);
setUndecorated(true);
getRootPane().setWindowDecorationStyle(JRootPane.NONE);
setResizable(false);
setAlwaysOnTop(true);
setLocation(0,0);
setVisible(true);
}
public String leerFichero(String nombre)
{
String centro="";
String linea="";
try
{
BufferedReader br=new BufferedReader(new FileReader(nombre));
while ((linea=br.readLine())!=null)
{centro=linea;}
}
catch(IOException i)
{
}
return centro;
}
public void hazteVisible(boolean visible){
this.setVisible(visible);
}
public VisibilidadControlable getVisibilidadControlable(){
return this;
}
public String cifrando(String clave)
{
char cad[] = new char[51];
int Orden[] = new int[51];
char Cambia[] = new char[51];
for (int i=1; i<=clave.length(); i++)
cad = clave.charAt(i-1);
for (int i=1; i < 51; i++)
Cambia = (char)27;
Orden[1] = 22;
Orden[2] = 5;
Orden[3] = 13;
Orden[4] = 10;
Orden[5] = 1;
Orden[6] = 48;
Orden[7] = 33;
Orden[8] = 21;
Orden[9] = 4;
Orden[10] = 23;
Orden[11] = 12;
Orden[12] = 42;
Orden[13] = 20;
Orden[14] = 3;
Orden[15] = 30;
Orden[16] = 40;
Orden[17] = 15;
Orden[18] = 9;
Orden[19] = 45;
Orden[20] = 28;
Orden[21] = 14;
Orden[22] = 11;
Orden[23] = 19;
Orden[24] = 29;
Orden[25] = 31;
Orden[26] = 39;
Orden[27] = 32;
Orden[28] = 41;
Orden[29] = 8;
Orden[30] = 37;
Orden[31] = 17;
Orden[32] = 6;
Orden[33] = 38;
Orden[34] = 49;
Orden[35] = 43;
Orden[36] = 7;
Orden[37] = 2;
Orden[38] = 16;
Orden[39] = 50;
Orden[40] = 25;
Orden[41] = 24;
Orden[42] = 35;
Orden[43] = 44;
Orden[44] = 47;
Orden[45] = 27;
Orden[46] = 36;
Orden[47] = 46;
Orden[48] = 26;
Orden[49] = 18;
Orden[50] = 34;
for (int i=1; i <= clave.length(); i++)
Cambia[Orden] = cad;
for (int i=1; i<51; i++)
{
if (Cambia=='a')
...
Respuesta de krlosnow
1