Entwickler-Ecke

Internet / Netzwerk - WinSock API - Wann kommt etwas zum lesen an


moddin - Sa 03.03.07 17:37
Titel: WinSock API - Wann kommt etwas zum lesen an
Ich hab mich seit neustem mit der WinSock api befasst und nen kleinen
client geschrieben

Jetzt das Problem :

Ich benutze zum lesen einen Endlosthread, welcher immer recv(..) aufruft
aber diese lösung finde ich nicht sehr gut - ich will das so implementieren
wie es zb bei ScktComp geschiet - mit OnRead etc Events

wie macht man sowas in etwa - man registriert doch eine funktion wie die hier (scktcomp)

procedure TCustomWinSocket.CMSocketMessage(var Message: TCMSocketMessage);

aber wie - über WSASnySelect ???!


moddin - So 04.03.07 19:24

omg feedback....


HelgeLange - So 04.03.07 19:48

Du siehst doch im Code von scktcomp, welche Message die registriert haben, um nachher das event auszulösen. Das ist die Message, die Windoof Dir schickt, wenn Daten auf dem von Dir belegtem Port ankommen.


moddin - So 04.03.07 20:26

mhhh ein bisschen genauer bitte

ich peile nich wie man ohne handle (formless application & es wird ja ein fenster handle verlangt - WSASyncSelect)
einen event callback registriere und wo gebe ich überhaupt an welche procedur dann das message empfängt

ist alles irgendwie schwammig


HelgeLange - So 04.03.07 21:36

deswegen kreieren solche Komponenten dann auch unter umständen ihr eigenes Window (unsichtbar natürlich)


Narses - Mo 05.03.07 01:07
Titel: Re: WinSock API - Wann kommt etwas zum lesen an
Moin!

user profile iconmoddin hat folgendes geschrieben:
Ich benutze zum lesen einen Endlosthread, welcher immer recv(..) aufruft
aber diese lösung finde ich nicht sehr gut

Warum? :gruebel: Die Indies machen es auch so - und da finden es alle gerade deshalb soo gut... :nixweiss: (und unter Lastaspekten betrachtet, ist es auch besser ;))

user profile iconmoddin hat folgendes geschrieben:
ich will das so implementieren wie es zb bei ScktComp geschiet - mit OnRead etc Events

a) Wozu die ScktComp nochmal erfinden? :P
b) Du hast doch offensichtlich den Source, da ist doch alles drin... 8)
c) Die WSA ist asynchron (=non-blocking) eine ziemliche Zicke, das ist ERHEBLICH VIEL SCHWERER handzuhaben, als synchron (=blocking socket calls mit threads)! :shock:

cu
Narses


moddin - Mi 07.03.07 17:07

naja ich will ja auch nur nen chilligen kleinen clienten schreiben und ich finde
das die ScktComp komponenten erstens total überladen sind mit features und zudem
einen gigantischen overhead einbaun - classes sysutils synobjects - das brauch ich ales nicht

nur genüsslich winapi und pures winsock - fertig :P

ich hab jetzt auch ne lösung : ich rufe einafch select auf , warte bis er den socket
mit read freigiebt und lese dann - alles als thread natürlich