Форум: "Сети";
Текущий архив: 2003.11.27;
Скачать: [xml.tar.bz2];
ВнизОшибка при передаче файла Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c