AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Indy oder WinSock für Netzwerkanwendungen
Thema durchsuchen
Ansicht
Themen-Optionen

Indy oder WinSock für Netzwerkanwendungen

Ein Thema von Jackie1983 · begonnen am 16. Feb 2008 · letzter Beitrag vom 19. Feb 2008
Antwort Antwort
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#1

Re: Indy oder WinSock für Netzwerkanwendungen

  Alt 16. Feb 2008, 13:56
die WinSocket-komponenten haben nur eine begrenzte Anzahl von Zeichen, die gleichzeitig versendet werden können. (bei mir sind das 8192 Byte). Das Problem bei längeren Zeichenketten ist das zusammenfügen...
bei Indy hast du das Problem nicht, da es schon gemanaged wurde...

kleines Beispiel für Indy

Server
Delphi-Quellcode:
procedure TForm1.IdTCPServer1Execute(AThread: TidPeerThread)
var befehl: string;
begin
befehl := Athread.Connection.ReadLn;
if Copy(befehl, 1, 3) = 'SCRthen
begin
  // zum Beispiel einen Screenshot mit einem Stream senden mittels
  AThread.Connection.WriteStream(Stream);
  // zum einfacheren abfragen auf der Clientseite:
  AThread.Connection.disconnect;
end;
if Copy(befehl, 1, 3) = 'TEXthen
  Athread.Connection.WriteLn('Text');
  // Bei einfachen Zeichenketten ist das nicht so umständlich
end;
end;
hier ist so ganz nebenbei noch zu empfehlen, den Execute-Block für ThreadSave in einen TCriticalSection-Block zu stecken (.Enter / .Leave)

Client
Delphi-Quellcode:
procedure Get;
begin
// TCPClient sollte schon verbunden sein
IdTCPClient1.WriteLn('SCREEN');
while IdTCPClient1.Connected do
IdTCPClient.ReadStream(Stream, -1, true) // Warten bis disconnect siehe oben
//...

IdTCPClient1.WriteLn('TEXT');
showmessage(IdTCPClient1.ReadLn);
end;
bei WinSockets gehts beim Server ähnlich. beim Client läuft das lesen über eine extra Prozedur, wesshalb der Programmablauf etwas unübersichtlich wird und alle Antworten in der selben Prozedur, die durchaus mal 800 mal hintereinander aufgerufen werden kann, behandelt werden.

rollstuhlfahrer
Bernhard
  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 02:13 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