Hallo,
ich habe hab folgendes Problem und benötige mal ne neue Idee. Ich habe eine Application geschrieben welche über Sockets über den Port 23 Nachrichten sendet. Um die Nachrichten zu empfangen habe ich ein Thread eingesetzt. Was auch einwandfrei so funktoniert.
Nun möchte ich die Application mittels einer Schleife dazu bringen sequentiell nacheinander Verbindungen zu verschiedenen Adressen aufzubauen um dort die Kommandos auszuführen.
Das Problem ist nun das meine Application tadellos im Debug Modus funktoniert wenn ich sie selber Schritt für Schritt durchführe.
Wenn ich allerdings die Application im normalen Betrieb starte, connectet er nur zum erster Adresse und führt da die Kommandos aus und bei den anderen passiert nichts.
Warum ist mir schleierhaft. Ist der eingetzte Thread zu langsam???
Irgendwo muss ich vermutlich einen Wartepunkt einbauen, was aber nich genau wo.
Hier mal der Code:
Hauptklasse:
und hier der Code der Thread- Klasse:
Bin für jeden Ansatz dankbar.
Danke schon mal im vorraus.
ich habe hab folgendes Problem und benötige mal ne neue Idee. Ich habe eine Application geschrieben welche über Sockets über den Port 23 Nachrichten sendet. Um die Nachrichten zu empfangen habe ich ein Thread eingesetzt. Was auch einwandfrei so funktoniert.
Nun möchte ich die Application mittels einer Schleife dazu bringen sequentiell nacheinander Verbindungen zu verschiedenen Adressen aufzubauen um dort die Kommandos auszuführen.
Das Problem ist nun das meine Application tadellos im Debug Modus funktoniert wenn ich sie selber Schritt für Schritt durchführe.
Wenn ich allerdings die Application im normalen Betrieb starte, connectet er nur zum erster Adresse und führt da die Kommandos aus und bei den anderen passiert nichts.
Warum ist mir schleierhaft. Ist der eingetzte Thread zu langsam???
Irgendwo muss ich vermutlich einen Wartepunkt einbauen, was aber nich genau wo.
Hier mal der Code:
Hauptklasse:
Code:
import java.io.IOException;
import java.io.*;
import java.net.*;
public class Telnetcon
{
public static String host[]={"172.30.230.5","172.30.244.4","172.30.230.5"};
public static int port=23;
public static void main(String[] args) throws InterruptedException
{
try
{
for(int i=0;i<=,2;i++)
{
System.out.println("\n\nSchleifenanfang:"+i);
Socket client=new Socket(host[i],23);
System.out.println(client);
InputStreamReader in =new InputStreamReader( client.getInputStream());
PrintStream os = new PrintStream( client.getOutputStream());
BufferedReader input=new BufferedReader(in);
System.out.println("\nVor dem Thread:\n");
TelnetInput a=new TelnetInput(input);
System.out.println("\nNach dem Thread:\n");
os.print("u0000883\n");
os.print("passwort\n");
os.print("en\n");
os.print("passwort\n");
os.print("sh users\n");
os.print("exit\n");
os.flush();
//warten auf das ende des threads
while(!a.finish())
;
System.out.println("\n\nSchleifenende");
try
{
client.close();
}
catch(IOException e)
{
System.out.println("Socket noch nicht geschlossen");
}
}
}
catch(IOException e)
{
System.out.println("No Connection to the host");
}
}
}
und hier der Code der Thread- Klasse:
Code:
import java.io.BufferedReader;
import java.io.IOException;
public class TelnetInput extends Thread
{
private static BufferedReader input;
private static boolean wstatus=true;
private static boolean finished=false;
TelnetInput(BufferedReader a)
{
input=a;
this.setDaemon(true);
this.start();
}
public void run()
{
try
{
while(!isInterrupted())
{
try
{
if(input.ready())
{
String s=input.readLine();
System.out.println(s);
if(s.indexOf("exit") != -1)
if(s.indexOf("(config)") == -1)
{
System.out.println("Thread finished");
this.interrupt();
finished=true;
}
}
}
catch(IOException e)
{
}
}
sleep(1);
}
catch(InterruptedException e)
{
}
}
boolean finish()
{
return finished;
}
}
Bin für jeden Ansatz dankbar.
Danke schon mal im vorraus.