![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Странное поведение TTcpServer [D2005, XP]
Это я © (2006-12-08 09:35:00)
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:00) [1]
> Это я
Вижу что ты)
А это я)
Сервер блокирующий ?
p.s.
Вопос следовало задать в "Сетях".