AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Probleme mit Indy 10 und TCP-Client
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit Indy 10 und TCP-Client

Ein Thema von gitguy · begonnen am 11. Nov 2007
Antwort Antwort
gitguy

Registriert seit: 11. Nov 2007
1 Beiträge
 
#1

Probleme mit Indy 10 und TCP-Client

  Alt 11. Nov 2007, 16:01
Hallo an alle!

Ich habe gestern erst mit Indy angefangen, bin also noch ganz neu.

Trotzdem hab ich ne Frage: Ich habe Indy 10.0.52 gestern installiert und mich an den Beispiel entlanggehangelt.

Ich möchte gerne eine kleine TCP-Verbindung aufbauen, über die nur Textnachrichten ausgetauscht werden sollen. Diese sollen dann in einer späteren Version noch interpretiert werden. Aber ich komme erst garnicht so weit, dass Nachrichten ausgetauscht werden können.

Der Server lässt sich ohne Probleme starten. Aber sobald der Client versucht zu connecten, stürtzt das Programm ab und ich habe eine Systemlast von 100%.

Am besten poste ich auch mal meinen Code... vielleicht hilft das ja!?

Server: die connect-Methode
Delphi-Quellcode:
procedure TForm1.IdTCPServerExecute(AContext: TIdContext);
var
    command: String;
    connected: Boolean;

begin

  AContext.Connection.IOHandler.WriteLn('Hello');
  connected:= true;
  while connected do begin
    try
      command:= AContext.Connection.IOHandler.ReadLn;
      AContext.Connection.IOHandler.WriteLn('>>'+command);
      Label5.Caption:= command;
      if (ansiUpperCase(command) = 'BYE') or (ansiUpperCase(command) = 'QUIT') then begin
        AContext.Connection.Disconnect;
        connected:= false;
      end; { if (ansiUpperCase(line) = 'BYE') or (ansiUpperCase(line) = 'QUIT') }
    except
      connected:= false;
    end; { try/except }
  end; { do while connected }

  SleepEx(1, True);

end;
Die Methode soll also einfach nur die vom Client geschickte Nachricht im Label anzeigen und an den Client zurückschicken. Mehr (erstmal) nicht.

Der Client-Code sieht wie folgt aus:
Delphi-Quellcode:
procedure TForm1.verbinde;
var text: String;
begin


  //IdTCPClient1.Host:= '192.168.1.3';
  //IdTCPClient1.Port:= 6666;

  try
    IdTCPClient1.Connect('127.0.0.1', 6666);
  except
  on E : Exception do
    begin


      ShowMessage('Fehler: ' + E.Message);

    end;

  end; { try/except }
[pre][/pre]
  try
    text:= IdTCPClient1.IOHandler.ReadLn;
    Label1.Caption:= text;
    Form1.Caption:= 'Client: verbunden mit ' + IdTCPClient1.Host;
  except
    //nix...
  end; { try/except }


end;
Wenn ich diese Methode aufrufe, steigt die Prozessorlast auf 100% und nichts geht mehr.
Beim debuggen bin ich bis zur folgenden Zeile gekommen:

Sie befindet sich in der Indy-Unit: IdWinSock2 Zeile 2937

Delphi-Quellcode:
function Stub_connect (const s: TSocket; const name: PSockAddr; const namelen: Integer): Integer; stdcall;
begin
  FixupStub('connect', @connect); {Do not Localize}
  Result := connect(s, name, namelen); //bei der Ausführung dieser Zeile stürtzt das Prgramm ab!!!
end;
Hab ich da jetzt was falsch gemacht, oder ist das vielleicht nen Bug der Version, hab gesehen, dass es eine neuere gibt. Wenn ja, wie kann ich die alte Version denn deinstallieren?

Wäre super, wenn mir jemand helfen könnte!

Vielen Dank im Voraus!

Andreas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:28 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