Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ClientSocketRead [D6, Win2k]


Dmitriy Polskoy ©   (2002-11-20 17:58:00) 

Есть ли возможность помещения данного обработчика в отдельный поток, а то при приеме большого файла клиент подвисает?


Digitman   (2002-11-21 14:38:00) [1]

Ну вот же, почти рядом ветка идет
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1037796770&n=4

Человек там "бьется лбом" ну практически в те же грабли !
Ну почему не прочитать-то да не вникнуть ?

Или вы друг у друга код сдираете ? Уж больно похоже)


Digitman   (2002-11-21 14:32:00) [2]

Ну почему SendText()/ReceiveText()-то ?
Что, других методов нет ?
Ты у кого это содрал ? Зачем ты себе геморрой зарабатываешь, повторяя (практически - один-в-один !) чужие ошибки ?
Ну ведь каждый же божий день здесь разжевываем, почему это плохо и, если не так уж и плохо, то - конкретно в каких случаях ....


Dmitriy Polskoy   (2002-11-21 14:25:00) [3]

Да охать и я умею. Вы бы лучше помогли разобраться. Насколько я понимаю, надо ограничивать длинну входных данных и работать только с ними. Или опять мимо?


Digitman   (2002-11-21 14:15:00) [4]

еще как - оххххх(....


Polevi   (2002-11-21 14:06:00) [5]

ох..


Dmitriy Polskoy   (2002-11-21 14:03:00) [6]

А он так и считывается

procedure TClientForm.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
Str: string;
Sp: string;
label Receive;
begin
Str := Socket.ReceiveText;

Sp := Copy(Str, 1, 4);

if Sp <> "file" then goto Receive;
if Sp = "file" then
begin
Delete(Str, 1, 5);
FileName := Copy(Str, 1, Pos("#", Str) -1);
Delete(Str, 1, Length(FileName) +1);
Size := StrToInt(Copy(Str, 1, Pos("#", Str) -1));

StatusBar.Panels.Items[0].Text := "


Digitman   (2002-11-21 08:21:00) [7]

есть такая возможность
впрочем, никто не заставляет тебя в OnClientRead считывать сразу весь поток (да и некорректно это). Можно считывать вх.поток поблочно, один блок небольшого размера за время обработки одного события OnRead.


Наверх

Титульная страница Поиск, карта сайта Написать письмо