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

Вниз

Ошибка при передаче файла   Найти похожие ветки 

 
Beglec   (2003-09-30 00:05) [0]

Этот вопрос задавал, но вразумительного ответа не услышал.
В общем есть TServerSocket и TClientSocket

клиенты посылают запросы что им требуется всякие файлы.

Server: -> Socket.SendStream(TMemoryStream);

если Клиент один подцеплен к серверу то все ОК вне зависимости от размера файла.

Если хотя бы два подцепились и запросили файло, то получается жопа. Оба клиента не получают файлы.
А сервер пишет что типа мол "я то отправил файло, ко мне притензий не каких".

Что странно... Делал файло размером в 1GB и сервер отправилял этот гиг за 1с. (что сами понимаете физически не возможно).
При коннекте одного клиента в конце концов клиент получает файл.
При коннекте более 1 клиента маленькие файлы еще пролетаю а большие застревают.

Вообщем как я понял нужно обрабатывать событие OnWrite.
внимание вопрос: но как правильно обрабатывать onWrite кто подскажет?


 
Digitman ©   (2003-09-30 08:09) [1]


> но вразумительного ответа не услышал.


нет вразумительного вопроса - нет и вразумительного ответа


> то получается жопа


ну очень "вразумительное" объяснение проблемы !


> сервер пишет что типа мол "я то отправил файло, ко мне притензий
> не каких".


не может он такого "писать", если только ты сам его не заставишь эту чушь рисовать на экране


> нужно обрабатывать событие OnWrite.


безусловно !


 
Verg ©   (2003-09-30 10:16) [2]

http://delphimaster.net/view/6-1063782976/


 
Fredericco ©   (2003-09-30 10:59) [3]

Событие OnWrite, как на клиентской стороне так и на серверной, символизирует лишь об одном: сокет готов к передаче данных. Готовность сокета есть следствие двух причин:
1) Сокет создался, подконнектился и готов к пердаче;
2) В процессе отправки информации буфер сокета заполнился, а вот теперь освободился и готов снова к передаче данных.

Как обрабатывать постарайся сам разобраться, а то эффекта не будет.


 
beglec   (2003-10-02 21:22) [4]

Digitman ->
Вопрос я думаю "вразуметельно" написан :)
Вопрос: Как правильно обрабатывать onWrite?

Сам попробуй
по событию
OnClick;
Socket.SendStream(TFileSteram) (размером скажем с 1 GB)
ShowMessage("Операция выполнена");

Засеки через сколько появился это сообщение?
А потом может и поймешь мой "вразумительный" вопрос.

С Уважением


 
Anatoly Podgoretsky ©   (2003-10-02 21:53) [5]

Еще раз читаем Digitman © (30.09.03 08:09) [1]

нет вразумительного вопроса - нет и вразумительного ответа


 
Digitman ©   (2003-10-03 08:17) [6]


> Socket.SendStream(FileSteram) (размером скажем с 1 GB)
> ShowMessage("Операция выполнена");


да не выполнена она !)
убедись в этом сам :

Socket.SendStream(MyStream)
try
ShowMessage("На данный момент в очередь на передачу поставлено " + IntToStr(MyStream.Position) + " байт из данного потока); // [1]
except
ShowMessage("Операция выполнена, поток полностью поставлен в очередь передачи и уничтожен !"); // [2]
end;

если возникнет ситуация [1], то жди обязательного возбуждения события OnWrite() и повтори в его обработчике исполнение всего этого куска кода !



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

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

Наверх




Память: 0.48 MB
Время: 0.02 c
1-89935
malefik
2003-11-18 09:03
2003.11.27
Не происходит события ONTIMER


4-90180
Ancara
2003-10-05 15:57
2003.11.27
GetMousePos


7-90135
Romka
2003-09-17 17:15
2003.11.27
Выключение компьютера


1-89825
Slym
2003-11-14 10:49
2003.11.27
Большие целые числа (128бит) и математические операции с ними


3-89697
Layner
2003-11-10 15:44
2003.11.27
Подскажите, как сделать запрос на сохранение, если запись была