Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.24;
Скачать: CL | DM;

Вниз

Странное поведение TTcpServer   Найти похожие ветки 

 
Это я   (2006-12-08 09:35) [0]


procedure TForm1.tcServerAccept(Sender: TObject; ClientSocket: TCustomIpClient);
var Cmd, Tmp: ShortString; Buf: TTempData; DS: Extended;
begin
 Log("Получен запрос на соединение от "+ClientSocket.RemoteHost+":"+ClientSocket.RemotePort);
 ClientSocket.Sendln("+OK 200 Database daemon ready");

 if not Auth(ClientSocket) then begin
   ClientSocket.Sendln("-ERR Authetication failed");
   Log("Попытка входа заблокирована: "+ClientSocket.RemoteHost);
   ClientSocket.Disconnect;
   Exit;
 end else begin
   ClientSocket.SendLn("+OK 200 Nice to meet you here!");
   Log("Выполнен вход... ["+ClientSocket.RemoteHost+"]");

   while Cmd<>"QUIT" do begin
     Cmd := Trim(AnsiUpperCase(ClientSocket.ReceiveLn));
     // -----------------------------------------------------------------------
     if (Copy(Cmd, 1, 4)="STAT") then begin // COMMAND STAT
       ClientSocket.Sendln(STAT(Cmd));
     end;
     // -----------------------------------------------------------------------
     if (Copy(Cmd, 1, 4)="RETR") then begin // COMMAND RETR
       Buf := RETR(Cmd); Ds := 0;
       try
         Ds := ClientSocket.SendBuf(Buf, SizeOf(Buf));
       finally
         ClientSocket.SendLn(iif(Ds>0, "+OK File transferred",
         "-ERR File transfer error"));
       end;
     end;
     // -----------------------------------------------------------------------
     if (Copy(Cmd, 1, 3)="GET") then begin  // COMMAND GET [NUM]
       Tmp := Trim(Copy(Cmd, 5, Length(Cmd)));
       Buf := GET(Tmp); Ds := 0;
       try
         Ds := ClientSocket.SendBuf(Buf, SizeOf(Buf));
       finally
         ClientSocket.SendLn(iif(Ds>0, "+OK File transferred",
         "-ERR File transfer error"));
       end;
     end;
     // -----------------------------------------------------------------------
     if (Trim(cmd)<>"") then    
     Log(Clientsocket.RemoteHost+": "+cmd);
   end;
   ClientSocket.Sendln("+OK 200 Database daemon closing connection");
   Log("Выполнен выход... ["+ClientSocket.RemoteHost+"]");
   ClientSocket.Disconnect;
   Exit;
 end;
end;

После отправки команды RETR file.dat 0 955 он отдаёт данные и всё нормально
Стоит отправить любую команду во второй раз - вешает проц на 100% загрузку, хотя данные и отдаёт.

В чём может быть проблема?


 
Сергей М. ©   (2006-12-08 10:02) [1]


> Это я


Вижу что ты)

А это я)

Сервер блокирующий ?

p.s.
Вопос следовало задать в "Сетях".



Страницы: 1 вся ветка

Текущий архив: 2006.12.24;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.044 c
15-1165172526
Kolan
2006-12-03 22:02
2006.12.24
Стандартные паттерны в BDS - есть ли они?


5-1145538059
Death_R
2006-04-20 17:00
2006.12.24
Доступк к БД без СУБД с помощью SQL


15-1164648130
Loginov Dmitry
2006-11-27 20:22
2006.12.24
Проблемы с винтом


15-1165168673
Горгер
2006-12-03 20:57
2006.12.24
Получить адрес в ассемблерной вставке


2-1165313272
daser
2006-12-05 13:07
2006.12.24
Как перевести символ в шестнадцатиричную строку и обратно?