AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Timer in TThread

Ein Thema von luke2 · begonnen am 26. Sep 2012 · letzter Beitrag vom 26. Sep 2012
Antwort Antwort
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#1

AW: Timer in TThread

  Alt 26. Sep 2012, 13:00
Also ich würde auf keinen Fall zwei Threads für einen Socket verwenden; das macht alles nur noch komplizierter.
Wenn du die recv()-Funktion aufruft; den Buffer aber als nil übergibst, dann solltest du entweder 0 oder die Anzahl der Bytes im Empfangspuffer oder einen Fehlercode erhalten.
Delphi-Quellcode:
procedure MeinThread.Execute;
var i: integer;
begin
  repeat
    i := recv(sock, Pointer(nil)^, -1);
    if i > 0 then
    begin
      i := recv(sock, buffer, sizeof(buffer));

      ...
    end;
    Sleep(0); // Rechenzeit abgeben, andernfalls 100% CPU
  until i <= 0;
end;
Und ansonsten:
Das direkte Benützen der WinSock API ist ziemlich kompliziert.
Die API ist viel mächtiger als das was ein Anwendungsprogrammierer braucht.
Also braucht man im Grunde genommen eine vereinfachte API für TCP/IP.
Dieses Problem wurde schon zig-fach gelöst.
Aber solange es Programmierer gibt sind sie dazu verdammt die gleichen Aufgaben immer wieder neu zu lösen.
Empfehlenswert ist die Unit $Delphi\Source\VCL\ScktComp.
Die Komponenten müssen nicht installiert werden.
Man kann damit zwar nur TCP/IPv4 betreiben, aber der Code ist relativ schlank und durch die Events OnRead, OnConnect usw. ist die Verwendung ziemlich einfach.
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz