"Net Send" Erfolgsmeldung abfragen?

Status
Nicht offen für weitere Antworten.

sliwalker

Top Contributor
Hi,

ich hab ein kleines GUI-Tool geschrieben um hier bei mir im Netzwerk bequemer Nachrichten verschicken kann.
Alles läuft Bestens, so dass ich es schon verwenden könnte, aber eine Kleinigkeit würde ich gerne noch drin haben.

Und zwar möchte ich noch einen modalen Dialog starten, sobald die NAchricht auch tatsächlich übermittelt wurde.
Nur weiß ich nicht, wie ich das abfragen kann. exec() gibt "Process" zurück. Nach bool kann ich das nicht casten bzw. es bringt nichts.

Weis jemand ne Lösung?

Thx im voraus.

greetz
SLi
 

sliwalker

Top Contributor
Macht euch keine Mühe mehr :p

Ich hab es selbst heraus gefunden.
Ich hab den exec-Befehl innerhalb einers Threads ausführen lassen und mit join() auf das ende gewartet.
Klappt bestens.

greetz
SLi
 

Sky

Top Contributor
So kannst Du das Ergebnis verarbeiten:

Code:
  Process p = Runtime.getRuntime().exec(...);
  InputStream in = p.getInputStream(); // Ergebnis auf deinen Inputstream umleiten

Was Du 'nur' noch tun mußt ist, den InputStream auslesen und gucken, ob Du eine Erfolgreiche Antwort bekommen hast oder auch nicht.
 

sliwalker

Top Contributor
Danke sky80.

Du hast Recht, meine Methode einen Thread dafür zu benutzen wirkt nicht ganz wie sie soll.
Immerhin wartet die Erfolgsmeldung bis die nachricht übertragen wurde bzw. bis der Thread zu Ende ist.
Nur leider gibt es immer eine Erfolgsmeldung.

Ich probier einfach mal Deine Version aus und gucke was so im InputStream steht.
Ich melde mich nochmal ;)

thx,
SLi
 

sliwalker

Top Contributor
Hoi,

das mit dem InputStream hat nicht geklappt.
Ich konnte ihn zwar Byteweise lesen, was mir eine Folge von Zahlen zwischen
0 und 255 brachte.
In der Windows-Hilfe, MSDN usw hab ich nicht gefunden.
Dann hab ich mir die MethodenListe von einem Process angesehen und die
Methode exitValue() gefunden.

Diese Änderungen hatten zur Folge, das man nach dem abschicken zwar die Nachricht
verschickt hatte, aber die Console zeigte eine IllegalThreadStateException, die von der
Methode exitValue geworfen wurde.

Hat jemand diesbezüglich eine Idee?
Hier ein bisschen Code:
Code:
 nachricht = ta.getText();
        befehl = befehl + " " + nachricht;
        try
	    {
	        p = Runtime.getRuntime().exec(befehl); 
	    } 
	    catch (IOException e)
	    {
	        e.printStackTrace();
	           JOptionPane.showConfirmDialog(this, "Es ist ein Fehler aufgetreten.",
	   				  "Versand fehlgeschlagen", JOptionPane.OK_CANCEL_OPTION);
	    }
	    
	    if(p.exitValue() == 0)
	    {
	        JOptionPane.showConfirmDialog(this, "Die Nachricht wurde fehlerfrei übermittelt",
	  			"Versandbestätigung", JOptionPane.OK_CANCEL_OPTION);	            
	    }
	    else
	    {
	        JOptionPane.showConfirmDialog(this, "Die Nachricht konnte nicht übermittelt werden",
	    		"Versand fehlgeschlagen", JOptionPane.OK_CANCEL_OPTION);
	    }

greetz
SLi
 

Illuvatar

Top Contributor
Nun, zu dem Zeitpunkt, wo du exitCode() abfragst, ist der Prozess noch nicht beendet, deswegen in einem "illegal state", um die Operation durchzuführen. Benutze die Methode p.waitFor(), um auf das Ende des Processes zu warten. Die Methode liefert dir übrigens auch gleich den Exitcode zurück. So hab ich das auch schonmal gemacht, das funktioniert prima ;)
 

sliwalker

Top Contributor
Danke Illuvatar.

Ich bin so dumm.
Ich hatte die ganze Zeit angenommen, dass die Methode waitFor() als Argument einen Process
erwartet, worauf der aufrufende process warten soll.

Nach Deinem Thread bemerk ich erst, dass die Methode waitFor() ganz anders gemaint ist ;)
Thx.

Klappt jetzt auch Bestens.
Wenn ich den Nachrichtendienst deaktiviere, kommt auch ne fehlermeldung.

greetz
SLi
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D WebSocket send Methode verschickt nichts! Netzwerkprogrammierung 3
S send riesige "Query" to servlet Netzwerkprogrammierung 7
J net send Popups abfangen und in eigenem Programm ausgeben. Netzwerkprogrammierung 12
D net send nachbilden ab vista Netzwerkprogrammierung 4
F UDP Receive und Send am gleichen Port Netzwerkprogrammierung 3
D Cannot find symbol: receive(), send() Netzwerkprogrammierung 8
K Frage zu Net Send Netzwerkprogrammierung 7
S object via post auf servlet send und weiter bearbeiten Netzwerkprogrammierung 11
F IPv6 FF02::1 abfragen Netzwerkprogrammierung 0
U HTTP XML vom Server abholen oder http Abfragen, Entscheidung treffen Netzwerkprogrammierung 0
S IP - abfragen ? Netzwerkprogrammierung 14
D HTTP Checksumme von Dateien abfragen Netzwerkprogrammierung 2
P Verfügbarkeit Netzwerkdrucker abfragen Netzwerkprogrammierung 2
T Wie connection Reset abfragen/abfangen? Netzwerkprogrammierung 10
T Mac Adresse über Socket Verbindung abfragen? Netzwerkprogrammierung 9
S Mittels Java XML abfragen und nicht die Ausgabe-HTML-Datei Netzwerkprogrammierung 5
D "Füllstand" des Backlog abfragen. Netzwerkprogrammierung 4
G Land abfragen Netzwerkprogrammierung 5
F Seiteninhalte bei httpsurlconnection abfragen Netzwerkprogrammierung 12
M Windows NT Domainnamen abfragen Netzwerkprogrammierung 3

Ähnliche Java Themen


Oben