Het gebruik van

TserverSocket vergadering, deze brief is in eerste instantie delphi3000. COM, in Tserversocket multi - threaded vermogen van de documenten die de Delphi kan een ongeoefend oog een beetje schaars.Ik zal proberen om over dit onderwerp een beetje meer licht, in feite heel makkelijk om een boodschap in het stopcontact op multi - threaded server.Delphi, er is een onderdeel van de Tserversocket,.,,, maar je moet een beetje kennis te gebruiken.,,, voor de bouw van je werk, je moet de toevoeging van Tserversocket:,,, - je belangrijkste vorm van eigendom.,,, stthreadblocking serverType, het creëren van een nieuwe eenheid (als volgt:) met inbegrip van de server draad.,,, en heeft de volgende code in onsocketgetthread,,, programma TFrmMain. fsocketgetthread (afzender: TObject;,, tserverclientwinsocket ClientSocket:;,, var socketthread: tserverclientthread);,,, ///////tserverthread object te creëren, ik heb aangegeven, in De volgende code, //.Een nieuw object wordt gemaakt, de oprichting van nieuwe verbindingen, ///////.,, socketthread:= tserverthread. Het creëren van (nep, ClientSocket);,,,,, aan het einde van tserverthread is; een doel, ik heb mezelf gemaakt.Doel van tserverclientthread en inheits waarin de werkelijke lezen en schrijven code uit het stopcontact.,,, ik heb met ten minste de volgende eenheid, eenheid serverthread code:,,,,,,,,, - interface, ramen, ScktComp, SysUtils, vormen;,,,,, eserverthread = (uitzonderingen); en De serverthread,, /is /tserverclientthread, nakomelingen,, tserverthread = (tserverclientthread), particuliere fsocketstream:twinsocketstream;,,,,,,,, programma 's voor clientexecute;; //////////////clientexecute herschrijven, en tserverclientthread. Clientexecute, bevat, is de code //////////////, de praktische uitvoering, bij het begin van het einde van de draad.,,,De uitvoering van het programma,,,,,, tserverthread. Clientexecute; beginnen, erfenis freeonterminate:= waar;,,,, fsocketstream:= twinsocketstream. Het creëren van (ClientSocket,,,,, 100000); ///////100000 milliseconde een time - out.,, probeer, en (niet beëindigd) en (ClientSocket verband), probeer te doen.,,, dit is wat je moet doen, wachten op de werkelijke, ///////input, lezen en schrijven,, /het volgende voorbeeld laat zien wat je kunt,, /hier, behalve uitzonderingen te doen, E:,,, //fout, sluiten en uit,,,, ClientSocket te beëindigen. Sluit de,,,Tot slot, aan het einde van de laatste;,,,,,,,, fsocketstream. Vrijheid, behalve het einde; e: uitzonderingen, te doen,,, ///////de sluiting en ontmanteling van fouten,,,,, de beëindiging van ClientSocket. Gesloten;,,,,,, aan het einde van het einde;;;,,, bij de vaststelling van de als die draad moet wachten op de input van gegevens.Je kan het gebruik van deze code, enz.:,,,,, als (niet beëindigd), (niet fsocketstream. Waitfordata (1 miljoen) en,,, aan het einde van de behandeling, //- time - out, er zit;,, /gegevens.Het lezen van de gegevens, de wil, moet je een buffer voor het opslaan van gegevens.Meestal, buffer is een pbytearray of reeks tekens.In dit geval ben ik een buffer, bekend als frequest, CHAR.Bovendien, ik verwacht een vastgesteld aantal bytes.Mijn generator met een constante requestsize grootte.,,, var, uitwisseling van readlen: gehele getal;,,,,,, fillchar (frequest, requestsize, 0); de uitwisseling van: = 0;,,,,, readlen:= herhalen, fsocketstream. Lezen (frequest [AC],,,,, /1024); ik lees de blokken van 1024 bits, totdat de buffer /vol, AC: = uitwisseling van + readlen;,, tot (readlen = 0) of (AC = requestsize);,,,,, aan het einde van readlen; als 0, ik aanvaard geen aanvullende gegevens.Read functioneren in twinsocketstream zei 100.000 milliseconden na verdunning,) ().Als je niet weet hoeveel gegevens kan worden verwacht, moet je deze time - out is vrij klein.In de meeste gevallen 30 seconden, moet een van de belangrijkste waarden, in een antwoord op, je moet op je gedrag van de consument.Veel klanten wachten op antwoord van een pakket van anderen verwacht veel tassen.,, in dit geval, ik heb een klant nodig, alleen een pakket, dus ik moet mijn gegevens in een blok:,,, fsocketstream. Writebuffer (FREP, freplysize);,,, - - is het antwoord de omvang is, en freplysize, replybuffer.



Previous:
Next Page: