Laden...

Socket/Prozess, die zweite

3 Antworten
1,216 Aufrufe
Letzter Beitrag: vor 20 Jahren
Socket/Prozess, die zweite

Hallo Leute!

Nachdem mein letztes Problem hier vielleicht von mir nicht gut genug beschrieben wurde, habe ich nocheinmal rumgetestet und kann es jetzt ganz kurz und bündig formulieren, und ich würde mich freuen, wenn es jemand nochvollziehen könnte.

Ein neues Projekt erstellen, C# Windows-Anwendung. Einfach einen Button hinzufügen, mit folgendem Code:


TcpListener t;
t = new TcpListener(33);
t.Start();

Process p = new Process();
p.StartInfo.FileName = "ping.exe";
p.StartInfo.Arguments = "localhost -t";
//p.StartInfo.UseShellExecute = false;

p.Start();

Natürlich


using System.Diagnostics;
using System.Net.Sockets;

nicht vergessen. Also, Programm starten, Knopf drücken, Ping wird geöffnet, Socket ist offen. Programm beenden (Ping laufen lassen), Programm neustarten, Knopf drücken. Ein zweites Ping ist offen, und wieder ein Socket ist geöffnet.

Als nächstes wird die

//p.StartInfo.UseShellExecute = false;

Zeile ent-kommentiert, so dass sie mit ausgeführt wird, anschließend den Vorgang wieder holen: Programm anmachen, Knopf drücken, man hat einmal Ping und den Socket. Programm schließen, Ping offen lassen. Programm starten, Knopf drücken - Peng, Exception (Port wird bereits verwendet).

Kann mir jetzt vielleicht jemand besser weiterhelfen? Ich verstehe das wirklich nicht 🙁

MfG,
Alexander

du musst am ende des programms seinen tcplistener zumachen:
t.stop();

(8(|)

Hi,

das hätte ich auch vermutet - bringt aber leider nichts, um geschildertes Problem zu beheben... Das Problem hängt irgendwie mit dem "UseShellExecute" zusammen, weil ohne die besagte Zeile funktioniert es. Leider brauche ich die aber, weil ich StdOut/StdErr umleiten muss.

MfG,
Alexander