Connection reset by peer
Привіт Майстри!
Суть проблеми в наступному:
Я використовував Indy9, потім постав 10 - все одно не допомогло!
Я юзаю TIdHttpServer
Все красиво работет - тільки коли я багато багато разів в Експлора натискаю кнопку оновити - тобто багато запитів на сервак - програма вилітає з помилкою
Connection reset by peer # 10054
Що робити? я так розумію, що якщо до мого сервку буде Конект багато людей - він вилетить?
10054 - Віддалений хост примусово розірвав існуюче підключення.
Хотілося б дізнатися до чого (кому) коннектимся?
Тобто Браузер конекттся до TIdHttpServer
че то у мене думка виникла.
А може при частому виклику оновити саме браузер, а не сервер перериває конект і тому TIdHttpServer мені про це говорить?
LOL. Ну це я зрозумів. ДО ЯКОГО комп (LAN, WLAN, DSL, MODEM), якими засобами і детальніше, якщо хочеш отримати вичерпну відповідь - дай вичерпну інфо!
У Windows XP існує обмеження 10 одночасних підключень.
батько Кіндрат # XA0; (12.08.06 20:31) [5]
У Windows XP існує обмеження 10 одночасних підключень.
Е. це 10 підключень куди?
interface
uses
# XA0; Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
# XA0; Dialogs, IdBaseComponent, IdComponent, IdTCPServer, IdCustomHTTPServer,
# XA0; IdHTTPServer. MaskUtils, Winsock, SyncObjs, IdContext;
type
TSamHTTPServer = class (TIdHTTPServer)
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; public
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; fname: String;
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; constructor Create (AOwner: TComponent);
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; destructor Destroy; override;
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; procedure _CommandGet (AContext: TIdContext;
# XA0; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; end;
VAR
# XA0; # XA0; SamHTTPServer: # XA0; TSamHTTPServer;
implementation
destructor TSamHttpServer.Destroy;
begin
# XA0; # XA0; inherited;
end;
procedure # XA0; TSamHttpServer._CommandGet;
begin
# XA0; # XA0;
# XA0; # XA0; if FileExists (ExtractFileDir (Application.ExeName) + ARequestInfo.Document) then
# XA0; # XA0; AResponseInfo.ContentStream: = TFileStream.Create (ExtractFileDir (Application.ExeNa me) + ARequestInfo.Document, fmOpenRead);
end;
constructor TSamHttpServer.Create;
begin
# XA0; # XA0; inherited Create (AOwner);
# XA0; # XA0; DefaultPort: = 4444;
# XA0; # XA0; AutoStartSession: = true;
# XA0; # XA0; Active: = true;
# XA0; # XA0; OnCommandGet: = _ CommandGet;
end;
мій телепатор висуває три Арианта:
а) перевищено ліміт з'єднань сервера;
б) кривої код;
в) a + б.
% -)
> [5] Батько Кіндрат # XA0; (12.08.06 20:31)
чого. куди? кого? "Бобер, видихай!" (Ц)
Спробуй ReuseSocket - rsTrue інакше і справді кривої код.
Накидав наскоряк - у мене все працює. -)
Дивись AResponseInfo.ContentStream: = TFileStream.Create а де і як потім він звільняється?
У чистому вигляді - згоден працює!
Просто насправді код сторінки генерується програмою - досить трудомісткий і времяёмкій процес, тобто сторінка вантажиться 3-4 сек!
Ну значитися однозначно - косяк в коді. Чи не полінуйся по F7 пройтися.
Код красивий і чіткий! все працює красиво! проблема виникає, коли багато Конект!
"Двигун був дуже схожий на справжній, але не працював" (ц)
А ну ка вставте в обробник procedure # XA0; TSamHttpServer._CommandGet;
Sleep (10000);
І запустіть і тисніть кнопку оновити # XA0; :-)))) ось токда оборжётесь!
Пам'ять: 0.75 MB
Час: 0.03 c