AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Connect / Disconnect bei IdTCPClient

Connect / Disconnect bei IdTCPClient

Ein Thema von divBy0 · begonnen am 13. Jan 2009 · letzter Beitrag vom 28. Jan 2010
Antwort Antwort
Benutzerbild von divBy0
divBy0

Registriert seit: 4. Mär 2007
Ort: Sponheim
1.021 Beiträge
 
Delphi XE2 Professional
 
#1

Connect / Disconnect bei IdTCPClient

  Alt 13. Jan 2009, 15:16
Hallo!

Eine TCP-Verbindung mit IdTCPClient aufzubauen funktioniert ganz gut, allerdings habe ich ein Problem, wenn ich die Verbindung trenne und gleich wieder aufbauen möchte. Dann bekomme ich einen 'Socket Error # 10048 Address already in use.'.

Verbindung aufbauen:
Delphi-Quellcode:
procedure TForm1.connect;
begin
  with IdTCPClient1 do
  begin
    BoundIP := '192.168.123.113';
    BoundPort := 2001;
    Host := '192.168.123.150';
    Port := 2000;
    ConnectTimeout := 2000;
    Connect;
  end;
end;
Verbindung trennen:
Delphi-Quellcode:
procedure TForm1.disconnect;
begin
  IdTCPClient1.Disconnect;
end;
Was mache ich denn da falsch? Sollte doch eigentlich so funktionieren, oder nicht?
Es scheint wohl irgendwie an dem disconnect zu hängen.

Bin für jede Hilfe dankbar!

Gruß
Marc

EDIT: Ich nutze Delphi2007 und Indy 10.
Marc
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt, die 10. summt die Melodie von Tetris... | Wenn das die Lösung ist, dann hätte ich gerne mein Problem zurück! | engbarth.es
  Mit Zitat antworten Zitat
Benutzerbild von hincapie
hincapie

Registriert seit: 24. Mär 2005
200 Beiträge
 
Delphi 5 Professional
 
#2

Re: Connect / Disconnect bei IdTCPClient

  Alt 14. Jan 2009, 09:02
Könnte an dem ConnectTimeout liegen...

Neuer Verbindungsaufbau ist nur dann möglich, wenn die angegebene Zeit abgelaufen ist..
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: Connect / Disconnect bei IdTCPClient

  Alt 16. Jan 2009, 00:31
Hi,

lass mal bitte die Zeilen :
Delphi-Quellcode:
  BoundIP := '192.168.123.113';
  BoundPort := 2001;
weg, so sollte es gehen :

Delphi-Quellcode:
procedure TForm1.connect;
begin
  with IdTCPClient1 do
  begin
    // BoundIP := '192.168.123.113';
    // BoundPort := 2001;
    Host := '192.168.123.150';
    Port := 2000;
    ConnectTimeout := 2000;
    Connect;
  end;
end;
Denn 2 x der gleiche BoundPort geht nicht,

Greetz Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Benutzerbild von divBy0
divBy0

Registriert seit: 4. Mär 2007
Ort: Sponheim
1.021 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Connect / Disconnect bei IdTCPClient

  Alt 16. Jan 2009, 11:04
Danke für eure Antworten.

Werde es ausprobieren, sobald ich wieder dazu komme.
Marc
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt, die 10. summt die Melodie von Tetris... | Wenn das die Lösung ist, dann hätte ich gerne mein Problem zurück! | engbarth.es
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#5

Re: Connect / Disconnect bei IdTCPClient

  Alt 13. Jan 2010, 15:45
Hallo,

ich hol den Thread mal hoch, um das technisch klar zu machen:

Wenn der Socket geschlossen wird, geht dieser in den FD_WAIT State bis WinSock (Windows) ihn freigibt. Und so lange ist es nicht möglich, die gleiche Verbindung erneut aufzubauen:

Wichtig ist für WinSock die Kombination aus Source IP, Source Port, Ziel IP und Ziel Port. Sind alle 4 identisch und ein Socket ist mit diesen Parameters noch im FD_WAIT, gibt es die Fehlermeldung WSAEADDRINUSE (10048). Intern geschieht dies im Bind(), kann aber auch erst im Connect() auftreten (laut MSDN und leidlicher Praxis).

Ergo, wer BoundIP und BoundPort nutzt, sollte sich klar machen, das ein 10048 wahrscheinlich wird. Ohne diese Parameter überlässt man es WinSock eine geeignete lokale IP und Port zu nehmen, spart sich also eine Menge Probleme.

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat
Benutzerbild von ralfiii
ralfiii

Registriert seit: 30. Mai 2007
489 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Connect / Disconnect bei IdTCPClient

  Alt 28. Jan 2010, 13:31
Zitat von Assertor:
Ergo, wer BoundIP und BoundPort nutzt, sollte sich klar machen, das ein 10048 wahrscheinlich wird. Ohne diese Parameter überlässt man es WinSock eine geeignete lokale IP und Port zu nehmen, spart sich also eine Menge Probleme.
Kann mir jemand mal erkären was bei einem TIdTcpClient der BoundPort soll, wo ich doch sowieso die Property "Port" auch einstelle?!?

Danke!!
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#7

Re: Connect / Disconnect bei IdTCPClient

  Alt 28. Jan 2010, 13:35
Hallo ralfiii,

Zitat von ralfiii:
Zitat von Assertor:
Ergo, wer BoundIP und BoundPort nutzt, sollte sich klar machen, das ein 10048 wahrscheinlich wird. Ohne diese Parameter überlässt man es WinSock eine geeignete lokale IP und Port zu nehmen, spart sich also eine Menge Probleme.
Kann mir jemand mal erkären was bei einem TIdTcpClient der BoundPort soll, wo ich doch sowieso die Property "Port" auch einstelle?!?

Danke!!
Klar, gerne!!!

Port = Zielport
Host = Zielhost/IP

BoundPort = Lokaler Quellport
BoundIP = Lokaler Quell-IP

Halt TCP/IP - es gibt immer eine Kombination von IP/Port sowohl für den Absender als auch für den Empfänger.

Gruß Assertor

Edits: Tippfehler...
Frederik
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 04:09 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