![]() |
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 |
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 :) |
Re: idtcpclient dissconnected
ich mach das ganze anders herum, der server sendet datei zum client
MfG Klaus P.S. ich poste anchher code |
Re: idtcpclient dissconnected
wie versprochen, hier der code:
Server:
Delphi-Quellcode:
client:
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;
Delphi-Quellcode:
und der type TCommBlock :
//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.
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. |
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 |
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. |
Re: idtcpclient dissconnected
so, client code geupdated
MfG |
Re: idtcpclient dissconnected
Hi,
ja war der FEhler den ich vermutet hatte. Also Du must folgendes ändern : Im Servercode :
Code:
Im Clientcode :
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;
Code:
Client.ReadStream(AStream);
AStream.Position := 0; SynEdit1.Lines.LoadFromStream(AStream); |
Re: idtcpclient dissconnected
big thx
MfG |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:07 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