Имя пользователя:
Пароль:
 

Название темы: Delphi .: [все вопросы] :.
Показать сообщение отдельно

Аватара для остался в живых

Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Отправить PM | Цитировать


всем доброго времени суток! столкнулся с одной проблемой с сокетами в windows 7. программа загружает файл на сервер. для этого использую TClientSocket. размер файла может быть большой, поэтому загрузку делаю в цикле: читаю из файла блоками по 64к и посылаю в сокет FClientSocket.Socket.SendBuf(Buf, Count); после отправки очередного блока инкрементирую прогрессбар для отображения процесса загрузки. на xp все работает нормально - прогресс бар движется постепенно. но эта же программа на 7 работает по-другому: выгрузка из нее происходит моментально, прогрессбар движется очень быстро до 100%, буквально за доли секунды. ответа от сервера, после отправки последнего пакета, приходится ждать очень долго, ведь реально файл не весь "ушел" на сервер. это можно увидеть в любом сетевом мониторе, dumeter к примеру - отправка идет. т.е. из программы весь файл уже как бы выгружен, но на сервер то он не весь загрузился за эти доли секунды - upstream интернета маленький. как бы в программе узнать, что очередной пакет реально выгружен? через GetTickCount замерял время выполнения Socket.SendBuf(Buf, Count); на xp и 7. на xp оно > 0. на windows 7 = 0.

Отправлено: 15:11, 06-06-2010 | #71

Название темы: Delphi .: [все вопросы] :.