AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi IndyFTP - Socket Error #10055
Thema durchsuchen
Ansicht
Themen-Optionen

IndyFTP - Socket Error #10055

Ein Thema von ThYpHoOn · begonnen am 24. Mär 2010 · letzter Beitrag vom 30. Mär 2010
Antwort Antwort
ThYpHoOn

Registriert seit: 8. Jan 2008
52 Beiträge
 
Delphi 5 Enterprise
 
#1

IndyFTP - Socket Error #10055

  Alt 24. Mär 2010, 14:53
Moin Leute,

benutze den Indy-FTP Client um Ordner zu synchronisieren. Klappt bei mir auch soweit wunderbar, nur bei meinem anderen Rechner (WinXP) kriege ich einfach einen Socket Error.

Socket Error # 10055 No buffer space available.

Ich schließe das TIdFTP-Objekt mit .Disconnect und habe es mit .Connect gestartet. Reicht das so aus? Oder lässt er durch das Disconnect immer ein Socket offen, was dann diesen Error auslöst? Wäre es dann besser mit einem .Quit das Objekt zu zerstören?

Interessant ist auch, dass die Exception bei einem PUT auftritt (ca. 100MB große Datei). Dann erstellt er nur noch eine 0Byte Datei auf dem FTP Server und geht in die Exception... Eine 5MB Datei kriegt er wunderbar hin, ebenso ein normaler Connect, DirListing, etc. Ablauf.


Greetz, ThY
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: IndyFTP - Socket Error #10055

  Alt 24. Mär 2010, 17:12
Scheint ein bekanntes Problem des TCP/IP Stack zu sein:
http://support.microsoft.com/kb/201213/en-us
Man müsste nun in den Sourcen von TIdFTP schauen, wie gross die Blockgrösse beim Senden einer Datei ist.
MS empfiehlt nicht mehr als 64kB zu verwenden.
Andreas
  Mit Zitat antworten Zitat
GHorn

Registriert seit: 24. Mär 2009
Ort: NRW
124 Beiträge
 
#3

Re: IndyFTP - Socket Error #10055

  Alt 25. Mär 2010, 09:01
Schon mal hier in der DP nach "10055" gesucht und
nix passendes gefunden??
  Mit Zitat antworten Zitat
ThYpHoOn

Registriert seit: 8. Jan 2008
52 Beiträge
 
Delphi 5 Enterprise
 
#4

Re: IndyFTP - Socket Error #10055

  Alt 25. Mär 2010, 09:07
Danke für die Antwort, hatte mir sowas auch schon fast gedacht nur nicht so konkret im Netz gefunden.
Hab mal geprüft, meine Indy-Komponente setzt im IOHandler.SendBufferSize 32k (32768). Selbst die Halbierung auf 16384 zeigte so keine Wirkung.

Wie kann ich denn den Socket-Modus auf "nonblocking" bzw. "asynchronous" ändern?
Als anderen Verdacht habe ich auch noch, dass eventuell der Arbeitsspeicher nicht ausreicht und er versucht die 200MB Datei in den Arbeitsspeicher zu laden und scheitert?

@GHorn nicht direkt zu TIdFTP, nur zu den TCP-Sockets allgemein hatte ich etwas gefunden, was mir aber nicht wirklich weitergeholfen hat.
  Mit Zitat antworten Zitat
ThYpHoOn

Registriert seit: 8. Jan 2008
52 Beiträge
 
Delphi 5 Enterprise
 
#5

Re: IndyFTP - Socket Error #10055

  Alt 26. Mär 2010, 09:44
Das vermutliche Problem liegt wohl darin das Indy FTP die komplette Datei die übertragen werden soll in den Arbeitsspeicher läd und dies scheinbar 2-Fach. Also bei einer 250MB Datei kriegt mein Prozess 500MB Arbeitsspeicher-Auslastung. Das ergibt dann wohl die Exception?!
Kennt ihr eine Einstellungsmöglichkeit für Indy um dies zu verhindern?
  Mit Zitat antworten Zitat
Assertor

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

Re: IndyFTP - Socket Error #10055

  Alt 30. Mär 2010, 16:17
Hallo,

Zitat von shmia:
Scheint ein bekanntes Problem des TCP/IP Stack zu sein:
http://support.microsoft.com/kb/201213/en-us
Nein, das gilt nur für Win9x und NT 4.0, steht ja auch unten auf der Seite

Zitat von ThYpHoOn:
Hab mal geprüft, meine Indy-Komponente setzt im IOHandler.SendBufferSize 32k (32768). Selbst die Halbierung auf 16384 zeigte so keine Wirkung.
Da sehe ich auch keinen Zusammenhang.

Zitat von ThYpHoOn:
Wie kann ich denn den Socket-Modus auf "nonblocking" bzw. "asynchronous" ändern?
Das ist nicht möglich. Indy arbeitet ausschließlich mit Blocking Sockets, so wie es MS empfiehlt.

Zitat von ThYpHoOn:
Als anderen Verdacht habe ich auch noch, dass eventuell der Arbeitsspeicher nicht ausreicht und er versucht die 200MB Datei in den Arbeitsspeicher zu laden und scheitert?
Zitat von ThYpHoOn:
Das vermutliche Problem liegt wohl darin das Indy FTP die komplette Datei die übertragen werden soll in den Arbeitsspeicher läd und dies scheinbar 2-Fach. Also bei einer 250MB Datei kriegt mein Prozess 500MB Arbeitsspeicher-Auslastung. Das ergibt dann wohl die Exception?!
Kennt ihr eine Einstellungsmöglichkeit für Indy um dies zu verhindern?
Ich schließe ein Speicher Problem bei so kleinen Dateien aus. Warum der Prozess statt 250 MB, 500 MB braucht: Debug Optionen sind eingeschaltet - das liegt am Delphi Memory Manager, nicht Indy.

Grundsätzlich: Die Fehlermeldung kommt vom Betriebssystem - Indy gibt diese nur weiter. Was sagt denn die Ereignisanzeige von Windows wenn der Fehler auftritt? Geht es auf besagtem XP Rechner mit einem anderen FTP Client denn (Fehler eingrenzen!)?

O.g. Meldung kenne ich nur aus dem Zusammenhang mit Trojanern unter XP, im Produktiveinsatz hab ich davon noch nicht gehört... Bitte auch noch mal mit einer sauberen XP SP3 Maschine testen (VM o.ä.).

Gruß,
Assertor
Frederik
  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 20:54 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