Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi idtcpclient dissconnected (https://www.delphipraxis.net/27099-idtcpclient-dissconnected.html)

Klaus-B.Schmidt 4. Aug 2004 09:15


idtcpclient dissconnected
 
hi leute, ich habe ienen client und einen servert, der client sendet eine anfrage nach einer datei an den server, nach erhalt der datei vom server wird die verbindung automatisch getrennt, was nicht sien soll, da ich eine permanente cverbindung zwischen den pc's brauch.

hab weder im client noch im server irgendwo disconect verwendet.

mfg
Klaus

the_seed 4. Aug 2004 09:46

Re: idtcpclient dissconnected
 
hi das ist ganz einfach
ich weiss nicht wie du es gemacht hast aber hier wie mans machen könnte ;)
Code:
client:

procedure TForm1.Button1Click(Sender: TObject);

begin

  idtcpclient1.host:=edit1.text;
  idtcpclient1.port:=strtoint(edit2.text);
  try
  idtcpclient1.connect;
  except ...

procedure TForm1.Button1Click(Sender: TObject);
var ergebnis:string;
begin
    try
   form1.idtcpclient1.writeln('existiertdatei');
    form1.idtcpclient1.writeln('c:\autoexec.bat');
      ergebnis:= form1.idtcpclient1.readln;
      except ...

------------------------------

server

procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
var a,pfad:string;

begin
   a:=athread.connection.readln;

     if a='existiertdatei' then begin
      pfad:=athread.connection.readln;
        if fileexists(pfad) then athread.connection.writeln('positiv')
          else
        athread.connection.writeln('negativ')
        end
         
        else ....

sollte funktionieren :)

Klaus-B.Schmidt 4. Aug 2004 10:57

Re: idtcpclient dissconnected
 
ich mach das ganze anders herum, der server sendet datei zum client

MfG
Klaus

P.S. ich poste anchher code

Klaus-B.Schmidt 4. Aug 2004 14:15

Re: idtcpclient dissconnected
 
wie versprochen, hier der code:

Server:
Delphi-Quellcode:
procedure TForm1.ServerConnect(AThread: TIdPeerThread);
begin
  //TBXDockablePanel1.Visible:=false;
  TBXLabel1.Caption:=AThread.Connection.LocalName;
  TBXLabel2.Caption:=timetostr(now);
  TBXLAbel3.Caption:=timetostr(now);
  LogBox.Lines.Add(timetostr(now)+' : Cnnection from '+ATHread.Connection.Socket.Localname);
end;

procedure TForm1.ServerExecute(AThread: TIdPeerThread);
var
  CB:TCommBlock;
  stream:TStream;
begin
  Athread.Connection.ReadBuffer(cb,sizeof(cb));
  if cb.Command='GET' then begin
    LogBox.Lines.Add(timetostr(now)+' Recive GET Command :'+CB.Msg);
    Stream := TFileStream.Create(extractfilepath(Application.exename)+'data\'+CB.Msg, fmOpenRead);
    AThread.Connection.OpenWriteBuffer;
    AThread.Connection.WriteStream(Stream);
    AThread.Connection.CloseWriteBuffer;
    Stream.Free;
  end;
end;
client:
Delphi-Quellcode:
//edit2: hier der richtige code:
procedure TForm1.Button1Click(Sender: TObject);
begin
client.Connect(10000);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  CB:TCommBlock;
  AStream:TMemoryStream;
begin
  CB.Command:=edit1.Text;
  cb.Msg:=edit2.Text;
  AStream:=TMemoryStream.Create;
  try
    Client.WriteBuffer(cb,sizeof(cb));

    Client.ReadStream(AStream,-1,true);
    AStream.Seek(0,sofrombeginning);
    SynEdit1.Lines.LoadFromStream(AStream);
  finally
    AStream.Free;
  end;
end;

end.
und der type TCommBlock :
Delphi-Quellcode:
unit GlobalUnit;

interface

type
  TCommBlock = record  // the Communication Block used in both parts (Server+Client)
                 Command,
                 Msg:string[100];                       // the message itself
              end;

implementation

end.

Klaus-B.Schmidt 4. Aug 2004 19:18

Re: idtcpclient dissconnected
 
nch neuer compillierung hängt sich der client trotz AntiFreez auf, und lässt sich erst beenden, wenn der server zugemacht wird .... bin total ratlos!!!

MfG
Klaus

DataCool 4. Aug 2004 23:47

Re: idtcpclient dissconnected
 
Hi,

warum ist der Code vom Server und vom Client der gleiche ?

Ich denke ich weiß wo dein Problem ist, aber dazu muss ich den Client-Code sehen.

Klaus-B.Schmidt 5. Aug 2004 14:03

Re: idtcpclient dissconnected
 
so, client code geupdated


MfG

DataCool 5. Aug 2004 14:20

Re: idtcpclient dissconnected
 
Hi,

ja war der FEhler den ich vermutet hatte.

Also Du must folgendes ändern :

Im Servercode :

Code:
    AThread.Connection.OpenWriteBuffer;
// so wird die größe des streams in den ersten 4 bytes mit übertragen  
    AThread.Connection.WriteStream(Stream,true,true);
    AThread.Connection.CloseWriteBuffer;
Im Clientcode :

Code:
    Client.ReadStream(AStream);
    AStream.Position := 0;
    SynEdit1.Lines.LoadFromStream(AStream);

Klaus-B.Schmidt 5. Aug 2004 14:48

Re: idtcpclient dissconnected
 
big thx

MfG


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:35 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