Foro sobre Java SE > Usar parte de un método que involucra sockets, en diferentes JDialog
Cordial saludo para todos.
Tengo actualmente en uno de mis JDialog una serie de instrucciones en las cuales se ingresa a un módem, después se ejecuta un comando y luego captura algunos datos para su posterior análisis. El siguiente JDialog está funcionando correctamente:
public IEP(javax.swing.JDialog parent, boolean modal) { super(parent, modal); initComponents(); setTitle("Evaluando parámetros del servicio"); }
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } private static void getPage(Socket clientSocket) { try { // Acquire the input and output streams DataOutputStream outbound = new DataOutputStream( clientSocket.getOutputStream() ); BufferedReader inbound = new BufferedReader( new InputStreamReader(clientSocket.getInputStream()) ); //outbound.writeBytes("Administrator"); //outbound.writeBytes("\n");
outbound.writeBytes("j4vad0c2"); //la clave con la que ingreso a mi módem outbound.writeBytes("\r"); try { Thread.sleep ( 1000) ; } catch ( InterruptedException ie) { } outbound.writeBytes("wan adsl line near"); //comando conocer datos internos del módem outbound.writeBytes("\r");
// Read the response String responseLine; while ((responseLine = inbound.readLine()) != null) { // Display each line to the console //System.out.println(responseLine); if (responseLine.contains("noise margin downstream")) { String[] responseSplit = responseLine.split(" "); System.out.println("SNR " + responseSplit[3]); }
try { // Open a client socket connection Socket clientSocket = new Socket("192.168.0.1", 23); System.out.println("Client1: " + clientSocket); // User defined Method
} // Variables declaration - do not modify private javax.swing.JButton jButton1; private javax.swing.JLabel jLabel1; // End of variables declaration }
La cuestión es la siguiente, resulta que debo usar en otros JDialog, parte del método que se describe anteriormente, ya que debo ingresar en varias ocasiones al módem y ejecutar otros comandos de tal forma que los datos a capturar y analizar son diferentes, es decir, la primera parte del método va a ser siempre igual
private static void getPage(Socket clientSocket) { try { // Acquire the input and output streams DataOutputStream outbound = new DataOutputStream( clientSocket.getOutputStream() ); BufferedReader inbound = new BufferedReader( new InputStreamReader(clientSocket.getInputStream()) ); //outbound.writeBytes("Administrator"); //outbound.writeBytes("\n"); outbound.writeBytes("14125665"); outbound.writeBytes("\r"); . . .
Cómo hago para usar esta parte del código como si fuera una clase, de tal forma que cuando invoque la clase desde los JDialog, deba colocar pocas líneas, colocando tan solo los comandos que puede ejecutar el módem y las palabras que uso para comparar los datos?
Cordial saludo para todos.
Tengo actualmente en uno de mis JDialog una serie de instrucciones en las cuales se ingresa a un módem, después se ejecuta un comando y luego captura algunos datos para su posterior análisis. El siguiente JDialog está funcionando correctamente:
package soporteinternet005;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;
public class IEP extends javax.swing.JDialog {
public IEP(javax.swing.JDialog parent, boolean modal) {
super(parent, modal);
initComponents();
setTitle("Evaluando parámetros del servicio");
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private static void getPage(Socket clientSocket)
{
try
{
// Acquire the input and output streams
DataOutputStream outbound = new DataOutputStream(
clientSocket.getOutputStream() );
BufferedReader inbound = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream()) );
//outbound.writeBytes("Administrator");
//outbound.writeBytes("\n");
outbound.writeBytes("j4vad0c2"); //la clave con la que ingreso a mi módem
outbound.writeBytes("\r");
try { Thread.sleep ( 1000) ; } catch ( InterruptedException ie) { }
outbound.writeBytes("wan adsl line near"); //comando conocer datos internos del módem
outbound.writeBytes("\r");
// Read the response
String responseLine;
while ((responseLine = inbound.readLine()) != null)
{
// Display each line to the console
//System.out.println(responseLine);
if (responseLine.contains("noise margin downstream"))
{
String[] responseSplit = responseLine.split(" ");
System.out.println("SNR " + responseSplit[3]);
}
if (responseLine.contains("attenuation downstream")) {
String[] responseSplit = responseLine.split(" ");
System.out.println("ATN " + responseSplit[2]);
int snr =0;
snr =Integer.parseInt(responseSplit[2]);
}
}
// Clean up
outbound.close();
inbound.close();
clientSocket.close();
}
catch (IOException ioe)
{
System.out.println("IOException: " + ioe);
}
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
IEP dialog = new IEP(new javax.swing.JDialog(), true);
dialog.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent e) {
System.exit(0);
}
});
dialog.setVisible(true);
}
});
try
{
// Open a client socket connection
Socket clientSocket = new Socket("192.168.0.1", 23);
System.out.println("Client1: " + clientSocket);
// User defined Method
getPage(clientSocket);
}
catch (UnknownHostException uhe)
{
System.out.println("UnknownHostException: " + uhe);
}
catch (IOException ioe)
{
System.err.println("IOException: " + ioe);
}
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
// End of variables declaration
}
La cuestión es la siguiente, resulta que debo usar en otros JDialog, parte del método que se describe anteriormente, ya que debo ingresar en varias ocasiones al módem y ejecutar otros comandos de tal forma que los datos a capturar y analizar son diferentes, es decir, la primera parte del método va a ser siempre igual
private static void getPage(Socket clientSocket)
{
try
{
// Acquire the input and output streams
DataOutputStream outbound = new DataOutputStream(
clientSocket.getOutputStream() );
BufferedReader inbound = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream()) );
//outbound.writeBytes("Administrator");
//outbound.writeBytes("\n");
outbound.writeBytes("14125665");
outbound.writeBytes("\r");
.
.
.
Cómo hago para usar esta parte del código como si fuera una clase, de tal forma que cuando invoque la clase desde los JDialog, deba colocar pocas líneas, colocando tan solo los comandos que puede ejecutar el módem y las palabras que uso para comparar los datos?