Aqualon
2005-07-12, 00:16:08
H!
Ich habe mal wieder ein ziemliches Problem. Wir sollen ein kleines Programm schreiben, das die Verbindungen von einem Port zu einem anderen durchleitet (und zwar in beide Richtungen).
Genaue Aufgabenstellung gibts unter http://www4.informatik.uni-erlangen.de/Lehre/SS05/V_SOS1/Uebung/aufgaben/a9.pdf
Mein Problem ist bei der forward-Funktion, die das bewerkstelligen soll. Meine Idee war, dass ich einen Thread für die eine Richtung und einen zweiten Thread für die andere Richtung verwende. Ich benutze dazu read() und write() und zwar solange, bis read() 0 oder -1 zurückliefert. Soweit klappt das auch und die Daten kommen auch an, aber z.B. in einem Webbrowser, der den port_forward als Proxy eingetragen hat, wird sehr lange das Ladeymbol angezeigt und der Child-Prozess, der dafür zuständig ist, wird auch nicht beendet.
Meine Vermutung ist, dass das Warten auf Beendigung des Threads per pthread_join() nicht richtig funktioniert, da sich ja erst der eine Thread beenden muss, bevor der zweite beendet werden kann.
Hat von euch schon mal jemand sowas ähnliches gemacht oder weiß ne Möglichkeit, wie ich mit Sicherheit aus der forward-Funktion zurückkomme, wenn alle Daten übertragen sind?
Aqua
Ich habe mal wieder ein ziemliches Problem. Wir sollen ein kleines Programm schreiben, das die Verbindungen von einem Port zu einem anderen durchleitet (und zwar in beide Richtungen).
Genaue Aufgabenstellung gibts unter http://www4.informatik.uni-erlangen.de/Lehre/SS05/V_SOS1/Uebung/aufgaben/a9.pdf
Mein Problem ist bei der forward-Funktion, die das bewerkstelligen soll. Meine Idee war, dass ich einen Thread für die eine Richtung und einen zweiten Thread für die andere Richtung verwende. Ich benutze dazu read() und write() und zwar solange, bis read() 0 oder -1 zurückliefert. Soweit klappt das auch und die Daten kommen auch an, aber z.B. in einem Webbrowser, der den port_forward als Proxy eingetragen hat, wird sehr lange das Ladeymbol angezeigt und der Child-Prozess, der dafür zuständig ist, wird auch nicht beendet.
Meine Vermutung ist, dass das Warten auf Beendigung des Threads per pthread_join() nicht richtig funktioniert, da sich ja erst der eine Thread beenden muss, bevor der zweite beendet werden kann.
Hat von euch schon mal jemand sowas ähnliches gemacht oder weiß ne Möglichkeit, wie ich mit Sicherheit aus der forward-Funktion zurückkomme, wenn alle Daten übertragen sind?
Aqua