PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Verschiedene Ports auf Eingang prüfen


K-Asche
23.08.2008, 16:24
Hi an alle,

ich muss für eine Anwendung während der gesamten Laufzeit prüfen ob auf verschiedenen Ports was empfangen wird. Wie realisiert man sowas am besten?
Mir fällt da so gar kein Ansatz ein. Höchsten über Threads oder Events.
Aber wie wirds gemacht, dass die ganze Zeit geprüft wird? Gibt es evtl. eine Windows Nachricht sobald auf einem Port etwas empfangen wird?

Gruß


Felix Kaiser
24.08.2008, 10:42
Schau dir mal bitte WSAAsyncSelect an, sollte genau das tun.

K-Asche
24.08.2008, 13:47
Ja wäre ne gute Idee aber ich würde das gerne doch eher so haben, dass es später auch auf Linux Systemen portiert werden kann ohne großen Aufwand. Deshalb wäre eine allgemeinere Lösung nicht schlecht. Aber ich werde erstmal schauen ob es damit funktioniert.

DanDanger
24.08.2008, 14:20
Ja wäre ne gute Idee aber ich würde das gerne doch eher so haben, dass es später auch auf Linux Systemen portiert werden kann ohne großen Aufwand. Deshalb wäre eine allgemeinere Lösung nicht schlecht. Aber ich werde erstmal schauen ob es damit funktioniert.

Du kannst sowohl unter Linux als auch unter Windows einfach
"select(...)" Benutzen. Gehört zum POSIX-Standard.

Gruss
DanDanger

K-Asche
26.08.2008, 12:36
Aber der Rest des Programme soll ja weiterlaufen, sprich er wartet bis was kommt und in der Zwischenzeit mache der Benutzer andere Sachen. Sobald dann etwas reinkommt wird dieser Punkt im Hintergrund verarbeitet

K-Asche
26.08.2008, 12:38
Aber der Rest des Programme soll ja weiterlaufen, sprich er wartet bis was kommt und in der Zwischenzeit mache der Benutzer andere Sachen. Sobald dann etwas reinkommt wird dieser Punkt im Hintergrund verarbeitet
Also könnte ich ja ebenso gut einen Thread im hintergrund laufen lassen der über recvfrom alle Anfragen an mich abfängt. Aber wie macht man so einen thread dann für sdie gesamte Laufzeit?

P.S. Ich weiß das hat jetztn nicht mehr unbedingt was m it Netzwerkprogrammierung zu tun. Sorry:rolleyes:

DanDanger
26.08.2008, 19:29
Du kannst beim "select(...)"-Aufruf auch ein TimeOut mitgeben.
Wenn Du das sehr klein wählst, sollte es eigentlich keine Probleme
mit "blockierenden" aufrufen geben.....