AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi [Indy]UDP schmiert nach ca. 8000 Sendungen ab

[Indy]UDP schmiert nach ca. 8000 Sendungen ab

Ein Thema von alzaimar · begonnen am 24. Nov 2006 · letzter Beitrag vom 25. Nov 2006
Antwort Antwort
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#1

[Indy]UDP schmiert nach ca. 8000 Sendungen ab

  Alt 24. Nov 2006, 14:30
Hi Leute,

Ich muss zugeben, von LAN, IP etc. hab ich 0,1% Ahnung. Daher meine vermutlich richtig bescheuerte Frage:

Ich habe mal einen UDP-Client geschrieben, der an eine meiner anwendungen UDP-Pakete schickt. Damit meine Anwendung mal so richtig ins Schwitzen kommt, wollte ich einfach mal 10000000 Pakete hintereinander schicken.

Nach ca. 8000 Paketen legt sich meine Testanwendung hin und meldet "10048 Socket in use" oder so.

Mit einem IP-Monitor sehe ich, das doch ne ganze Menge Ports auf 'time_wait' stehen, was immer das heißt. Zwar nicht 8000, aber so ca. 4000...

Wie schaffe ich das denn, das mir die TIdUDPClient-Komponente immer den gleichen lokalen Port nimmt, also mir den Testrechner nicht zumüllt?

So verschicke ich ein UDP-Telegram:

Delphi-Quellcode:
(*
Var
  UDP: TIdUDPClient;  <--- UDP ist auf dem Formular als Komponente, der Timeout ist auf "-2"
*)

Begin
// UDP := TidUDPClient.Create(Nil);
  Try
    UDP.Host := IP;
    UDP.Port := 12999;
    UDP.Active := True;
    UDP.Send(s); // <-- s ist der String (ach was)
    UDP.Active := False;
  Finally
// udp.Free
  End;
End;
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: [Indy]UDP schmiert nach ca. 8000 Sendungen ab

  Alt 25. Nov 2006, 09:28
Zitat von alzaimar:
Wie schaffe ich das denn, das mir die TIdUDPClient-Komponente immer den gleichen lokalen Port nimmt, also mir den Testrechner nicht zumüllt?
Hi, hoffe ich bin jetzt geistig auch im richtigen Thread
Mit Hilfe der Eigenschaft Binding.Port setzen, hier weißt du den lokalen Port zu, der verwendet wird. Die Eigenschaft Port hingegen wird für den Remote-Port verwendet. Ansonsten ist bei Indy noch wissenswert, dass du hier ein IdAntiFreeze verwenden solltest. Es sorgt dafür, dass die von Indy geöffneten Sockets einen eigenen Thread blockieren und nicht den Hauptthread des Programms.

Ist jetzt reine Spekulation, dass dein Problem hieraus resultiert, all zu weit ist auch mit meinen Kenntnissen nicht her auf dem Gebiet.

Gruß Der Unwissende
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: [Indy]UDP schmiert nach ca. 8000 Sendungen ab

  Alt 25. Nov 2006, 11:42
Hi,

Hier bist Du richtig.

Aha, ich werd mal die Bindings.Port-Eigenschaft auf einen festen Wert setzen, Danke.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  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:07 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