Einzelnen Beitrag anzeigen

Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Socket Fehler 10051. Im Thread Verbindung aufbauen.

  Alt 11. Sep 2008, 14:37
Ja, lager es in einen Thread aus. Ich weiß es jetzt auch nicht besser (wenn es überhaipt etwas besseres gäbe).

aber dein oben geposteter Thread klappt so nicht.
  1. Application.Processmessages brauchst du nicht aufrufen, dafür hast du ja den Thread. Und generell ist Application global, deswegen nicht vom Thread auf diese Variablen zugreifen.
  2. Die Critical Section ist auch falsch angelegt. Die muss nunmal ausnahmsweise global sein (oder besser: du übergibst eine Referenz auf das Objekt dem Thread), da alle Threads darauf zugreifen müssen (und zwar auf die gleiche Instanz der Klasse).
    Außerdem sehe ich in dem Code noch nicht die Notwendigkeit einer CS.
  3. Erstelle die Socketkomponente im Thread und mache alles über den Thread
  4. Implementiere eine Messageschleife:while getmessage(msg,0,0,0) do dispatchmessage(msg) , oder so ähnlich
  5. Alternativ zur Messageschleife kannst du den Client auch auf Blocking-Mode stellen (Socket.clienttype:=ctBlocking), aber ob das durchängig sinnvoll ist, mag ich jetzt nicht abschätzen. Zumindest bleibt dann der Thread beim Empfang stehen, solange es nichts zu empfangen gibt und kein fehler aufgetreten ist.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat