Вниз
Скачать: CL | DM;

ProgressBar   Найти похожие ветки 

 
Гоги   (2004-07-14 04:11) [0]

Всем привет. Написал простенький чат с возможностью пересылки файлов на основе TServerSocket&TClientSocket. Клиент отсылающий, сервер принимающий. Файл отсылается с помощью TFileStream. Ни как не соображу, где отлавливать прогресс пересылки файла на отсылающем компе. Помогите решить эту проблему.


 
Digitman ©   (2004-07-14 08:05) [1]

реализуй и используй в качестве стрима своего наследника класса TFileStream

в этом наследнике перекрой виртуальный метод Read() - будешь иметь полный контроль над считыванием блоков файла


 
Гоги   (2004-07-14 19:09) [2]

Спасибо за совет! Все работает!
Но теперь появилась еще одна проблема. В моей программе используется две пары компонентов TClientSocket&TServerSocket, одна пара для пересылки файлов, другая для обмена сообщениями.
То есть создается два разных сокета. И когда они работают параллельно, время от времени возникает ошибка "Asynchronous socket error", ну или что-то вроде этого. Ясно, что необходима какая-то синхронизация. У сокета есть свойство ASyncStyles, это оно?


 
Piter ©   (2004-07-14 22:39) [3]

Гоги   (14.07.04 19:09) [2]
о есть создается два разных сокета. И когда они работают параллельно, время от времени возникает ошибка "Asynchronous socket error",


по-моему, это не из-за того, что они работают параллельно


 
Гоги   (2004-07-15 00:29) [4]

по-моему, это не из-за того, что они работают параллельно
Возможно. Но у меня эта ошибка вылетает только при одновременной передачи данных. Да и то не всегда. Если передается файл и при этом попытаться передать сообщение, примерно в одном из трех случаев возникает ошибка. Сообщение до удаленного компа не доходит.


 
VID ©   (2004-07-15 00:42) [5]

Гоги   (15.07.04 00:29) [4]
может если clientsockt который отправляет файл разместить в потоке А, а clientsocket который "общается" разместить в потоке B то ошибки не возникнет. желательно что бы ни A ни B  не были основным потоком процесса(приложения).

Это всего лишь предположение...


 
Гоги ©   (2004-07-16 01:48) [6]

Я немного изменил алгоритм передачи файлов и ошибка пропала сама собой. Что это была за ошибка, для меня остается загадкой. Большое всем спасибо.



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.026 c
14-1093604350
ydv
2004-08-27 14:59
2004.09.19
Форум


3-1093333516
r9000
2004-08-24 11:45
2004.09.19
Ошибка при использовании отчета на QuickRep.


4-1091597087
ERASER
2004-08-04 09:24
2004.09.19
Добавить пункт в меню Windows


14-1093420906
Alx2
2004-08-25 12:01
2004.09.19
Когда предприятию необходим собственный полноценный отдел АСУ?


14-1093608857
1008
2004-08-27 16:14
2004.09.19
Как определить, что предпросмотр в QReport е завершён?




   Наверх