Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Sehr langen String mit Clientsocket an Serversocket senden.. (https://www.delphipraxis.net/17044-sehr-langen-string-mit-clientsocket-serversocket-senden.html)

Evian 27. Feb 2004 10:58


Sehr langen String mit Clientsocket an Serversocket senden..
 
Ich möchte gern den Inhalt einer Listbox über die Clientsocket Kombo an eine Serversocket Kombo schicken und dann wieder in einer anderen Listbox Speichern. Dazu versende ich einfach den CommaText und das ist soweit auch gar kein Problem. Wenn der Comatext der ersten Listbox jedoch eine bestimmte Zeichenanzahl übersteigt, wird der der Sendestring nicht mehr als ein Packet abgeschickt, sonder in mehrere Teiler zersplittet. Nun wird es recht schwer den Comatext einfach im ServerSocket1ClientRead zu speichern, da

Code:
Serverlistbox.items.comatext := socket.ReceiveText
bewirken würde, dass nur das letzte Teilpacket in der Serverlistbox gespeichert wird.
Naja ich habe das jetzt so gemacht, dass ich bevor ich den String verschicke, vorhänge wie viele Zeichen der String hat und dann später vergleiche: Hat der empfangene Comatext die Zeichenanzahl des versendeten Comatexts, dann ist alles Prima, ansonsten soll immer wenn ein neues Stringpacket empfangen wird dieses an den Comatext rangehängt werden ... halt eben so lange bis Server Comatext gleich Client Comatext ist.

Mh.. ich schätze jetzt peilt keiner, gar nichts mehr... also zeig ich mal meinen Code;

Code:

// Zum Versenden

procedure Clientform.Button1Click(Sender: TObject);
VAR
send : STRING;
BEGIN
  send := '±±±'+ inttostr(length(Clientlistbox.Items.CommaText)) + '±±±' + Clientlistbox.Items.CommaText;
  socket.SendText(send);
END;

// Emphangen
procedure Serverform.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
VAR
s, sh : STRING;
i : INTEGER;
begin
  s := socket.ReceiveText;;
  FOR i := 1 TO 3 DO sh := sh + s[i];
  IF sh = '±±±' THEN
  BEGIN
    all := FALSE; // Global
    delete(s,1,3);
    laenge := strtoint(copy(s, 1,pos('±±±',s)-1));
    delete(s,1,pos('±±±' ,s) + 2);
    coma := coma + s; // Global
    s := '';
    if length(coma) = laenge THEN
    BEGIN
      all := TRUE; // Global
      Serverlistbox.Items.CommaText := coma;
      socket.Close;
    END;
  END;

  IF all <> TRUE THEN
  BEGIN
    coma := coma + s;
    if length(coma) = laenge THEN
    BEGIN
      all := TRUE; // Global
      Serverlistbox.CommaText := coma;
      socket.Close;
    END;
  END;
END;

Also das funktioniert soweit auch alles Prima. Nur kommt mir das ein wenig zu kompliziert vor, es muss doch auch einen einfacheren Weg geben um lange Strings übers Netz zu versenden, oder?! Hat Jemand eine Idee?!

Jens Schumann 27. Feb 2004 11:53

Re: Sehr langen String mit Clientsocket an Serversocket send
 
Hallo,
der Ausweg ist TWinSocketstream. Dafür musst Du eine blockierende Verbindung
verwenden. ISt sowieso besser.

Evian 27. Feb 2004 11:59

Re: Sehr langen String mit Clientsocket an Serversocket send
 
Öhm hast Du dafür ein Beispiel oder so?! Kann mir darunter nichts
Richtiges vorstellen. Mit Strams hab ich noch nicht wirklich gearbeitet..

Jens Schumann 27. Feb 2004 12:02

Re: Sehr langen String mit Clientsocket an Serversocket send
 
Hallo,
ein Beispiel habe ich z.Z. nicht.
Diese Beispiele erstecken sich immer über endlos viele Codezeilen.
Dadurch sind sie immer ziemlich unverständlich.

Evian 27. Feb 2004 12:06

Re: Sehr langen String mit Clientsocket an Serversocket send
 
Naja bei Google gibt es zum Thema "TWinSocketstream" nicht wirklich was, dass den umgang damitt vertändlich erklärt. Und die Delphi Hilfe beschreibt auch nur Allgemeinen Müll dazu :(

Jens Schumann 27. Feb 2004 12:07

Re: Sehr langen String mit Clientsocket an Serversocket send
 
Zitat:

Zitat von Evian
Naja bei Google gibt es zum Thema "TWinSocketstream" nicht wirklich was, dass den umgang damitt vertändlich erklärt. Und die Delphi Hilfe beschreibt auch nur Allgemeinen Müll dazu :(

Sag ich doch. Weil die funktionierende Beispiele immer aus sehr Codezeilen bestehen.

Evian 27. Feb 2004 12:09

Re: Sehr langen String mit Clientsocket an Serversocket send
 
Und wie soll ich dann damitt arbeiten, wenn ich keine Ahnung habe wie´s funktioniert?! *g*

Jens Schumann 27. Feb 2004 12:23

Re: Sehr langen String mit Clientsocket an Serversocket send
 
Ich habe sowas schon mal gemacht.
Dafür habe ich TClient- und TServerSocket verwendet. Ich viele kleine Testprogramme
geschrieben, bis ich kapiert habe wie es geht. Das ist aber schon solange her,
dass ich mich in das Thema wieder einarbeiten muss um ein Beispiel zu produzieren.

Ich dachte ich mach das mal schnell.

Jetzt kann ich aber TClientSocket und TServersocket in der D7 Pro Komponentenpalette
nicht finden. Ich habe D7 erst seit 5 Wochen. Wo sind die Komponenten geblieben ?

Chris1986 27. Feb 2004 12:48

Re: Sehr langen String mit Clientsocket an Serversocket send
 
Zitat:

Zitat von Jens Schumann
Jetzt kann ich aber TClientSocket und TServersocket in der D7 Pro Komponentenpalette
nicht finden. Ich habe D7 erst seit 5 Wochen. Wo sind die Komponenten geblieben ?

Hier im Forum suchenSockets Delphi7

MfG
Christian

Evian 27. Feb 2004 12:50

Re: Sehr langen String mit Clientsocket an Serversocket send
 
Komponente -> Packages installieren -> Hinzufügen
und dann die dclsockets70.bpl aus dem Delphi-bin Verzeichnis laden ... und schwups sind die Sockets unter INTERNET wieder da.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:55 Uhr.
Seite 1 von 4  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz