Re: TCP Client socket in zweiten Thread



Hallo!

"Frank Steinmetzger" <"Warp_7@"@gmx.de> schrieb im Newsbeitrag
news:vkfvn35d2bsh.x4pljky66z3b.dlg@xxxxxxxxxxxxx
> Hallo,
>
> ich schreibe ein Programm für den PDA, das sich per TCP mit einem
> Hostrechner verbindet. WindowsCE unterstützt nur blockierende Sockets,
> also
> kommt der in einen extra Thread, damit der nicht die GUI blockiert.
>

Wo steht das, das CE nur blockierende Sockets unterstützt?
Laut der Doku ist unter CE ioctlsocket vorhanden und akzeptiert
FIONBIO als Parameter.

> Das Programm soll zum Server verbinden und dann auf Buttonklick ein paar
> Bytes an den Server schicken. Das Problem jetzt: ein GUI-Thread hat zwar
> eine Messageloop, wird jedoch vom Socket blockiert und ein Worker thread
> hat gar keine Messageloop. Muss ich da nun bei jedem Ereignis den Socket
> neu aufbauen? Ich hätte eigentlich gern eine permanente Verbindung, die
> dann halt gelegentlich ein paar Byte sendet.

GUI- und Worker-Threads sind ein und dasselbe: nämlich Threads.
Der einzige Unterschied ist, dass die Thread-Funktion von den GUI-Threads
in der Regel eine vom benutzten Framework bereitgestellte Funktion ist,
während dies bei den Worker-Threads dem Entwickler überlassen wird.

Es gibt nichts, was einen Worker-Thread daran hindern könnte, eine Message-
Loop und im Extremfall auch noch Fenster dazu zu erzeugen.

Falls Du aber blockierende Sockets benutzten musst, kann dir select sagen,
ob ein entsprechender recv- oder send-Aufruf blockieren wird oder nicht.

MfG
Andre Stille


.


Loading