Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2011, 00:50   #1
Snayper
 
Регистрация: 10.12.2010
Сообщений: 6
Злость Приём файла Socket сервером при ServerType := stThreadBlocking

Здравствуйте уважаемые пользователи данного форума.
Пишу программу клиент-сервер, клиент передаёт серверу файл, сервер его принимает, передача осуществляется через socket. Проблема в том, что на сервере в progressbar 'е отображается процесс приёма файла, а так как обновление его состояния происходит при приёме каждого нового пакета данных, то форма намертво подвисает пока файл не будет передан. На сервере параметр ServerType = stNonBlocking. (СЕРВЕР принимает файл)
Пришёл к выводу о том, что нужно принимать данные с ServerType = stThreadBlocking.
И вот проблема. Никак не могу понять как принять данные и не только данные в виде короткой команды, но и довольно большие файлы. Надеюсь на Вашу помощь.

Приведите пожалуйста код сервера, позволяющий ему принимать файлы при ServerType = stThreadBlocking.
Snayper вне форума Ответить с цитированием
Старый 28.03.2011, 02:06   #2
Snayper
 
Регистрация: 10.12.2010
Сообщений: 6
По умолчанию

Ну неужели никто не сталкивался с подобным? Очень нужно реализовать, помогите пожалуйста!
Snayper вне форума Ответить с цитированием
Старый 28.03.2011, 10:07   #3
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Прием данных в режиме stThreadBlocking ничем не отличается от приема в режиме stNonBlocking.
mss вне форума Ответить с цитированием
Старый 28.03.2011, 12:32   #4
Snayper
 
Регистрация: 10.12.2010
Сообщений: 6
По умолчанию

Так как же не отличается, в таком режиме даже событие onRead не возникает! Или я что-то не так делаю и он должно возникать?
Snayper вне форума Ответить с цитированием
Старый 28.03.2011, 12:38   #5
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

А причем здесь событие ?
Прием передаваемой инф.ции осуществляется в точности теми же имеющимися у класса TCustomWinSocket методами ReceiveText и ReceiveBuf.
mss вне форума Ответить с цитированием
Старый 28.03.2011, 12:46   #6
Snayper
 
Регистрация: 10.12.2010
Сообщений: 6
По умолчанию

ну это понятно, но как вообще дойти до этого приёма? должно же возникать какое то событие, в котором будет осуществляться этот приём?! Вот как описать это событие?
Snayper вне форума Ответить с цитированием
Старый 28.03.2011, 13:10   #7
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

> должно же возникать какое то событие, в котором будет осуществляться этот приём?

В блокирующем режиме не должно.
Да и зачем оно тебе ?
Просто в цикле читай из сокета столько данных, сколько ожидаешь получить от отправителя.
mss вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать что бы при нахождении файла *rep_01.* и файла *rep_015.* программа их раскидывал по разным п MixanMM Общие вопросы Delphi 5 19.11.2009 12:59
Передача файла по Socket KoBRaAndrey Работа с сетью в Delphi 2 13.11.2009 20:05
Приём данных с com порта kyc0k Помощь студентам 3 28.03.2008 15:04
Приём изображений Terran Работа с сетью в Delphi 2 15.12.2007 15:03
При выполнении запроса из проекта пропадает связь с сервером D-mon БД в Delphi 4 19.11.2007 12:24