Autor Beitrag
raven_22
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 95

Win XP pro
D7 Enterprise
BeitragVerfasst: Do 12.08.04 12:37 
Hallo !

Ich versuche schon seit einiger Zeit, eine Verbindung IdTCPClient1 <> IdTCPServer1 herzustellen.
Leider will es mir einfach nicht gelingen.
Der Server Steht und der Client sprich ihn auch an.
Leider gibt mir der Server keine Antwort zurück.
Ich baue die Verbindung wie folgt auf.


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.Button1Click(Sender: TObject);
begin
IdTCPServer1.DefaultPort:=80;
IdTCPServer1.Active:=true;

IdTCPClient1.Host:='127.0.0.1';
IdTCPClient1.Port:=80;
IdTCPClient1.Connect(IdTCPClient1.ReadTimeout);
end;



Kann mir bitte jemand sagen, was ich hier falsch gemacht habe ?
Ich denke mal das es mit den Threads zutun hat oder ?
Wäre nett, wenn mir einer etwas Code posten würde.

LG raven 8)

_________________
---_-= raven_22 =-_---
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Do 12.08.04 12:40 
Der Server muss nachdem Verbindungsaufbau natürlich auch erst Daten senden, bevor sie empfangen werden können!
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.idTCPServer1Connect(AThread:TidPeerThread);
begin
 AThread.Connection.WriteLn('Hallo, ich bin '+idTCPServer1.LocalName);
end;

{...}

begin
 ShowMessage(idTCPClient1.ReadLn);
end;
Der Code den zu zum Verbinden benutzt ist in Ordnung!

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
raven_22 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 95

Win XP pro
D7 Enterprise
BeitragVerfasst: Do 12.08.04 14:21 
Danke für die schnelle und ausführliche Antwort !
Nun müsste ich nur noch den Server dazu bringen, auf Befehle des Client zu reagieren.
Kann mir dies jemand zeigen ?
Wenn ich erstmal eine Zweiwegekommunikation aufgebaut habe, ist der Rest ja nicht mehr so schwer.

LG raven 8)

_________________
---_-= raven_22 =-_---
maxk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1696
Erhaltene Danke: 1

Win XP, Debian Lenny
Delphi 6 Personal
BeitragVerfasst: Do 12.08.04 14:23 
Der Server stellt ein Ereignis dazu bereit: OnExecute.

// Edit: Opps, Frage falsch verstanden.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TMainForm.POPServerExecute(AThread: TIdPeerThread);
var uMsg,Msg:string;
begin
 with AThread.Connection do try
  Msg:=ReadLn;
  if length(Msg)=0 then exit;
  uMsg:=UpperCase(Msg);

  if copy(uMsg,1,5)='USER ' then begin
   WriteLn('Hallo '+copy(Msg,6,length(Msg));
  end else
  if {..} 
  else WriteLn('Fehler bei Befehlverarbeitung: '+Msg);
end;

_________________
Ein Computer wird das tun, was Du programmierst - nicht das, was Du willst.
raven_22 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 95

Win XP pro
D7 Enterprise
BeitragVerfasst: Do 12.08.04 16:13 
Danke für deine Mühen !

Mir hat das OnExecute- Ereignis schon gereicht.
Ich habe nun alles was ich wissen wollte.
Der Up- und Download von Dateien geht auch schon, mit Fortschrittsanzeige.
Wie immer ist es einfacher als man denkt.

LG raven 8)

_________________
---_-= raven_22 =-_---