Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.12.24;
Скачать: [xml.tar.bz2];

Вниз

Странное поведение 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.034 c
15-1165168245
homm
2006-12-03 20:50
2006.12.24
Настройка сетевого окружения


15-1165152452
ProgRAMmer Dimonych
2006-12-03 16:27
2006.12.24
Нужен абсолютно серьёзный ответ


1-1163063449
MegaVolt
2006-11-09 12:10
2006.12.24
Как правильно отлавить изменение Handle компонента?


11-1142164166
qert
2006-03-12 14:49
2006.12.24
Как узнать что объект освобожден или нет


2-1165431748
N@mCo
2006-12-06 22:02
2006.12.24
iconka v system tray





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский