Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi tcpserver einträge mit tcpclient lesen/empfangen (https://www.delphipraxis.net/97036-tcpserver-eintraege-mit-tcpclient-lesen-empfangen.html)

pillepalle 3. Aug 2007 09:57


tcpserver einträge mit tcpclient lesen/empfangen
 
hi leute

ich habe mir gestern einen simplen tcpserver welcher text empfängt und diesen in ein memofeld schreibt.
Ich würde nun gern mit dem tcpclient alle einträge aus diesem memofeld (vom tcpserver) lesen.

Zur realisierung, gibt es da nur die möglichkeit mit dem tcpserver das ganze an den tcpclient zu schicken? (im grunde genauso wie ichs schon gemacht habe, nur umgekehrt von server zu client)

Oder (was natürlich super wäre) gibt es eine möglichkeit mit dem TCPclient auf dem server zu connecten und das memofeld auszulesen? Würde ungerne in meinem Clienten einen server reinpacken müssen um das zu empfangen.

anhand diesem tutorial hab ich das ganze erstellt: http://dsdt.info/tutorials/winsocket/?page=1

DataCool 4. Aug 2007 11:43

Re: tcpserver einträge mit tcpclient lesen/empfangen
 
Hi,

ich versteh Dein Problem nicht wirklich :

- Client connected zum Server
- Client sendet "TEXT blabla" zum Server
--> Server erkennt Kommando "TEXT" schreibt "blabla" ins Memo

- Client sendet "GETTEXT" zum Server
--> Server erkennt Kommando "GETTEXT" und schickt den Inhalt des Memos an den Client.


Gruß Data

pillepalle 5. Aug 2007 20:15

Re: tcpserver einträge mit tcpclient lesen/empfangen
 
kannst du mir ein beispiel zeigen wie das mit dem gettext geht?

DataCool 5. Aug 2007 21:07

Re: tcpserver einträge mit tcpclient lesen/empfangen
 
Hi,

ziemlich simpel :

Im OnExecute des IdTcpServer :
Delphi-Quellcode:
procedure XYZTcpSvrExecute(AContext: TIdContext);
Var sIn : String;
    sCmd : String;
    sData : String;
    iPos : Longint;
begin
  try
    // Alle 500 ms Sekunden nachschauen ob etwas vom Client gekommen ist
    sIn := AContext.Connection.Socket.ReadLn(#$A,500);
  except
    sIn := '';
  end;
  if Trim(sIn) <> '' then begin
    iPos := Pos(' ',sIn);
    if iPos > 0 then begin
      sCmd := Uppercase(copy(sIn,1,iPos-1));
      sData := copy(sIn,iPos,Length(sIn)-(iPos-1));
      if sCmd = 'TEXT' then
        memo1.lines.add(sData)
      else begin
        if sCmd = 'GETTEXT' then
          AContext.Connection.Socket.WriteLn(memo1.lines.text);
      end;
    end;
  end;
end;
Hoffe das passt, habs gerade aus dem Kopf hier runter getippt.

Greetz DataCool


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:37 Uhr.

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