Здравствуйте, Аноним, Вы писали:
А>Как правильно организовать пересылку любых файлов (в т.ч. архивов) в приложении клиент-сервер?
Пересылай поблочную передачу. Т.е. отсылай, к примеру, по 4 кб получателю. После приема блока получатель высылает один контрольный байт, после чего отправитель отсылает очередной блок. и так далее. Рекомендую использовать TCP, чистые АПИшные сокеты, и асинхронный способ передачи.
Re[2]: пересылка файла клиент-сервер
От:
Аноним
Дата:
13.08.05 22:33
Оценка:
Здравствуйте, danclax, Вы писали:
D>Пересылай поблочную передачу. Т.е. отсылай, к примеру, по 4 кб получателю. После приема блока получатель высылает один контрольный байт, после чего отправитель отсылает очередной блок. и так далее. Рекомендую использовать TCP, чистые АПИшные сокеты, и асинхронный способ передачи.
А каким образом открыть принятый файл или сохранить его? Пересылку/прием организую send/recv блоками. Как сообщить принимающей стороне тип пересылаемого файла, что б можно было создавать файл для записи указанного типа?
> Как правильно организовать пересылку *любых* файлов (в т.ч. архивов) в > приложении клиент-сервер?
Есть у тебя сокет. Читаешь из файла блоками по X килобайт и пишешь в сокет.
Собственно, всё...
При желании можешь ещё какие-нить заголовки передавать. В качестве
примера можешь взять протокол HTTP. Или FTP.
Posted via RSDN NNTP Server 1.9
Re[2]: указатель на память ресурса после LoadResource
Здравствуйте, mgoncharenko, Вы писали:
>> Как правильно организовать пересылку *любых* файлов (в т.ч. архивов) в >> приложении клиент-сервер?
Тут надо какой-нибудь простенький протокол придумать. Например, клиент шлет серверу запрос
на отсылку файла (4 байта — int код отсылки файла, например, 1000), сервер отвечает четырехбайтовым
int-ом тоже, что он не против принять файл. Тогда клиент шлет ему длину строки с именем файла, само имя
файла, длину строки с путем, куда файл поместить, сам путь. Также шлется строка с параметрами
открытия файла и т. д. Затем идет отправка самого файла кусками, но лучше это делать не по 4 Кб,
как было написано в предыдущем посте, а большими кусками (вообще-то это зависит от типа соединения, но
если по локалке, то не меньше 500 Кб, иначе медленно работать будет). После отсылки каждого куска
клиент должен получить с сервера 4 байта — int код подтверждения получения пакета. Причем, перед каждым
куском еще лучше слать размер этого пакета, а то последний пакет будет не 500 Кб, к примеру, а 233 Кб.