Программы для передачи больших файлов. Защищенный обмен файлами по каналам Internet. С учетом всех обстоятельств

29.01.2019

Вопрос оперативной передачи данных большого объема конкретному адресату нередко ставит в тупик начинающих пользователей глобальной сети, в помощь которым мы подготовили небольшую шпаргалку с описанием наиболее доступных методов транспортировки увесистых файлов

Завсегдатаи портала 3DNews наверняка успели заметить, насколько часто в заметках рубрики Software мы стали акцентировать внимание на решении практических задач, которые то и дело встают как перед начинающими, так и перед умудренными жизненным опытом интернет-пользователями. В качестве яркого примера можно привести недавние публикации про средства для конспирации в чатах , методы сохранения инкогнито в Сети и сокрытия активности в торрент-сетях , секреты веб-поиска и многие другие. Интерес к подобного рода материалам обусловлен не только актуальностью рассматриваемых в них вопросов, но и востребованностью у читателей, отражающейся в статических отчетах и количестве оставляемых к статьям комментариев. Именно по этой причине мы решили дополнить опубликованные ранее обзоры шпаргалкой, описывающей способы адресной пересылки файлов огромного размера через Интернет. Гигантомания давно уже правит бал в глобальной сети, и знание простых и доступных всем и вся техник оперативной передачи данных большого объема от одного пользователя к другому определенно не будет лишним.

Мы получим чуть более точную и техническую информацию, а теперь рассмотрим некоторые элементарные понятия. Вместо этого перед передачей он подразделяется на так называемые «пакеты». Количество пакетов зависит от размера данных. Для простоты давайте подумаем о передаче текстового файла. Чем больше файл, тем больше пакетов потребуется для «представления» файла.

Если мы представляем файл как поезд, то пакеты будут индивидуальными вагонами. Большой поезд: несколько вагонов, небольшой поезд: мало, может быть, только один вагон. Каждый пакет похож на конверт, отправленный обычной почтой, с фактическими данными, частью исходного файла, внутри.

Итак, предположим, у нас имеется увесистый файл размером этак несколько гигабайт (дистрибутив, ISO-образ какой-либо системы, фильм, напичканная видеороликами и графикой презентация, архив с комплектом фотографий любимой тещи - не суть важно), и потребовалось во что бы то ни стало подручными средствами перекинуть его конкретному адресату через витиеватые дебри Всемирной сети. При таких размерах электронная почта - не самый лучший вариант для транспортировки данных, и следует брать на вооружение иной инструментарий. Какой именно?

Каждый пакет или конверт, если мы следуем в предыдущем примере, содержит следующую информацию: источник данных, место назначения данных, информацию об исходном файле и позицию пакета в этом файле. Вы можете заметить, в приведенной выше схеме, что тот факт, что пакеты путешествуют индивидуально, подчеркивается. Кроме того, эти пути часто не являются прямыми, а скорее содержат число или «реле». Физически на аппаратном уровне реле создаются маршрутизаторами. Как следует из названия, маршрутизаторы позволяют пакетам находить лучший маршрут между двумя компьютерами, которые не принадлежат к одной и той же сети.

Читательская аудитория с ходу предложит воспользоваться присутствующими практически на любом компьютере мессенджерами, поддерживающими функцию передачи файлов. Мысль здравая, тем более что многие IM-клиенты (та же Miranda IM линейки 0.9.х, например) позволяют копировать объекты размером свыше 4 Гбайт и даже поддерживают докачку, а у пресловутого Skype, если верить описанию на сайте разработчиков, и вовсе нет ограничений по объему транслируемых данных. Проведенный нами эксперимент показал, что для таких целей лучше всего подходит "Скайп", оснащенный функцией автоматического возобновления процесса копирования при обрывах соединения, с завидным постоянством возникающих при передаче больших файлов через службы мгновенного обмена сообщениями.

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

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


В обновленной "Миранде" реализован механизм докачки файлов в случае обрыва соединения

Кто-то из проникшихся идеей данной заметки товарищей поспешит порекомендовать сетевые хранилища, от обилия которых голова может пойти кругом. Тоже вариант. Однако стоит учитывать, что многие файлообменники вроде Rapidshare и Megaupload заставляют мириться с многочисленными ограничениями копируемых на сервер данных и частенько доводят до белого каления конечных пользователей раздражающими рекламными баннерами, блокирующими работу сервиса таймерами и предложениями отправить дорогостоящие SMS для ускорения скачивания файлов. Минусов хватает, и чтобы поменьше с ними сталкиваться, имеет смысл использовать не полупиратские службы типа "рапидшары", а более толковые и цивилизованные решения, к примеру, "Яндекс.Народ" . Последний хорош не только неограниченным дисковым пространством, но и умением манипулировать объектами размером до 5 Гбайт и защищать данные паролем. При этом файлы всякий раз проверяются антивирусом Dr.Web и хранятся не менее трех месяцев. Время хранения можно продлевать сколько угодно раз, или оно продлевается автоматически, если файл скачивают.

Это хорошо иллюстрирует концепцию «отказоустойчивой» системы. Во-вторых, возможно, отправка небольшого файла может занять очень много времени, если есть большой файл, передаваемый «перед ним». Вернемся к изображению поезда, в котором пакеты являются вагонами. Полоса пропускания конечна. Чтобы отправить небольшой пакетный файл, вам нужно подождать, пока большой файл не пройдет. Если вы отделите 20 вагонов в отдельные пакеты и отправьте их по одному, то один пакетный поезд имеет хороший шанс пройти вместе с пакетами 20 вагонов.

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


Третий способ пересылки крупных файлов предполагает использование специализированных веб-сервисов, обеспечивающих организацию канала передачи данных между двумя компьютерами и функционирующих в окне любого браузера. Подобного рода программных решений представлено в Сети - мама не горюй. Из наиболее достойных можем отметить проекты PipeBytes и iSendr . Пользоваться ими проще простого: указываем объект для пересылки, получаем на руки уникальную ссылку, технично пересылаем ее посредством той же "аськи" удаленному пользователю и дожидаемся начала копирования данных в режиме реального времени. Никаких надоедливых регистраций аккаунтов при этом не требуется. Агитировать в пользу того или иного инструментария не будем. Скажем только, что iSendr помимо всего прочего позволяет раздавать файлы сразу нескольким пользователям (до пяти человек) и в целях исключения перехвата информации злоумышленниками осуществляет шифрование транслируемых данных по алгоритму AES с длиной ключа 128 бит.

Безопасное совместное использование паролей и другой простой информации

Эта статья выглядит знакомой?

Если вы просто отправляете имя пользователя, пароль или другую строку текста, защитите свою информацию несколькими простыми трюками.

Легко и достаточно безопасно: сломайте сообщение в куски

Иногда все, что требуется для повышения вашей безопасности, - это небольшая неясность, и это то, о чем этот метод.

Безопасная отправка документов и других файлов

Основная идея может работать в любом направлении, если вы отделяете контекст от информации. Но это лучше, чем ничего, что многие из нас делают сейчас.

Если вам нужно отправить полную документацию, например, документы для вашей работы или фальшивую фотографию, вам понадобится помощь внешней службы. Вот наши любимые способы безопасного отправки файлов.



Повествуя о способах транспортировки массивных файлов через Интернет, нельзя обойти стороной инструментарий для обмена данными по протоколу BitTorrent, вряд ли нуждающемуся в представлении публике. Подавляющее большинство торрент-клиентов могут работать без трекера (веб-сервера, осуществляющего координацию клиентов BitTorrent), и их смело можно использовать для прямого обмена файлами между двумя компьютерами, у одного из которых обязательно должен быть выделенный IP-адрес. Это первое "но", есть и второе: для организации соединения потребуется выполнить ряд несложных, но обязательных операций, достаточно доходчиво изложенных на этой странице блога Ильи Матвеева из Нижнего Новгорода. Следуя представленной инструкции, даже неискушенным юзерам не составит труда организовать раздачу данных одному или нескольким пользователям.

Причины отказа от традиционных решений

Отправьте эту ссылку по электронной почте или текстовому сообщению получателю, и они смогут безопасно загружать ваш файл. Это скопирует свою общую ссылку на ваш буфер обмена. . Если вы хотите добавить немного дополнительной защиты этому методу, вы можете использовать также метод «половина и половина» из раздела 1: отправьте половину ссылки на получателя по электронной почте, а другую половину над текстовым сообщением.

Для Толпы Секстинга: Ничто не является надежным; Когда сомневаетесь, дайте им их в лицо

Самый безопасный способ отправки файла - это зашифровать его паролем.

Этот метод очень безопасен, но имеет один недостаток: этот метод требует, чтобы у вашего получателя была программа, которая может открывать зашифрованные архивы.

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


Кто найдет в себе силы разобраться с хитростями и нюансами практического применения торрентов, тот без проблем сможет наладить у себя на локальной машине HTTP- или FTP-сервер, возможностей которого с лихвой хватит для пересылки тех или иных данных конкретному адресату. Для развертывания HTTP-сервера сгодится не требующая инсталляции и состоящая всего из одного исполняемого файла размером 560 кбайт Windows-утилита HFS (HTTP File Server) . С организацией FTP помогут справиться здравый смысл и программный продукт

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

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

Internet - одно из самых выдающихся открытий 20 века. В развитых странах мира большинство людей получают самую последнюю информацию из этой сети. Так для чего же нужен Internet? Самое главное предназначение этой сети - передача информации от одного компьютера к другому. Сегодня я хочу рассказать Вам, как можно с помощью стандартных средств Visual Basic получать и передавать информацию через Internet.

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

Немного теории

Протоколы и Стандарты

Связь через Internet и обмен данными облегчены развитием стандартных протоколов связи. Самое важное в Internet - язык, на котором общаются все компьютеры. Основной язык Internet - это протокол TCP/IP. Этот протокол позволяет любому компьютеру, связанному с Internet быть уникально идентифицированным и позволяет любому такому же компьютеру посылать или получать информацию от любого другого связанного с Internet компьютера.

Одним из наиболее удобных решений для обмена файлами является электронная почта. Без какой-либо установки или специального программного обеспечения компании могут обмениваться данными в своем домене или за пределами своего домена, прикрепляя конкретный файл к сообщению электронной почты.

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

В основе TCP/IP - концепция, что каждый компьютер имеет уникальный адрес. Этот адрес - 32-разрядный номер, представленный как четыре 8-разрядных компонента (например, 103.205.67.88). Этот номер называют IP номер. IP номера регулируется внутри Internet системой InterNIC, чтобы гарантировать уникальность этого номера.

IP номера, ввиду их сложного запоминания, не позволяют пользователю Internet комфортно работать, поэтому была создана специальная служба DNS (Domain Name Service), которая транслирует 32-разрядный IP номер в специальное имя. Это имя называется именем домена, например IP номер 103.27.56.45 мог бы называться vbnet.ru или prog.ru или еще как-нибудь. Поэтому, когда вы вводите в строке адреса Вашей программы для работы в интернет имя сервера, например www.vbnet.ru, то это имя транслируется в IP адрес и только затем Вы попадаете на нужный Вам сервер. Однако никто не мешает Вам использовать IP адреса вместо имени, суть от этого не меняется. Если, конечно, Вы его запомните.

Опрос об устранении недостатков электронной почты и предотвращения потери данных показал, что 41% опрошенных компаний из США используют такой персонал. Несмотря на то, что этот метод прост и существует уже много лет, он имеет свой собственный набор недостатков.

Средства сжатия файлов

Однако это также приводит к предотвращению доступа законных пользователей к ресурсам компании. Изменение правил брандмауэра для пользователей для обмена файлами снижает эффективность брандмауэров. Аналогичным образом, хотя данные передаются через поток данных, поток управления находится в режиме ожидания. Это может вызвать проблемы с большими передачами данных через брандмауэры, которые тайм-аут после длительных периодов бездействия. Несмотря на то, что файл может быть успешно перенесен, сеанс управления может быть отключен брандмауэром, что приведет к возникновению ошибки. Услуги по доставке в ночное время хорошо работают, когда ваша компания находится строго в одном часовом поясе с 8 до 5 рабочих часов.

Одно из наиболее частых использований Internet обращение к файлам, сохраненным на удаленном компьютере. Стандартный протокол Internet для доступа к такому файлу - протокол передачи файлов (FTP). Он позволяет удаленным пользователям соединяться с компьютером и получать доступ к файлам, специально открытым для публичного просмотра.

World Wide Web

Web - набор протоколов, которые работают по Internet. В настоящее время три необходимых технологии определяют World Wide Web и осуществляют связь между клиентом Сети и сервером Web связанными по TCP/IP сети.

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

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

Первая - протокол стандарта Internet, называемый языком передачи гипертекста (HTTP), который был разработан в конце 1980-ых. HTTP был специально разработан чтобы обеспечить стандартный путь просмотра документов на удаленном компьютере, а также для передачи их от одного компьютера к другому. Вторая технология Web - язык разметки гипертекста (HTML). HTML - наиболее часто используемый формат документа в Web. HTML использует директивы, или специальные метки для определения форматирования документа, оставляя фактическое форматирование клиенту. За развитием HTML следит специальная организация W3C. Любые изменения или нововведения в HTML должны утверждаться этой организацией.

HTML документ может содержать ссылки к рисункам, изображениям, звуку, и т.д., а также ссылки на другие документы в сети Internet. Ссылки в документах даются в специальном формате URL, показывающем местоположение специфического ресурса Internet.

Воровство через Internet

Когда Вы находитесь в сети Internet, то любой другой пользователь Internet может связаться с Вами. Так вот, если на Вашем компьютере есть файлы, открытые Вами специально для публичного доступа, то он сможет их прочитать! На этом основаны некоторые методы взлома домашних компьютеров для получения паролей и прочей информации. Представьте себе, что Вы были так любезны, что открыли свой диск для других пользователей (неважно, по какой причине: может по незнанию, а может для друзей) и вышли в Internet. При выходе в сеть Ваш провайдер присвоил Вам IP адрес. Он, кстати, может быть постоянным или же разным для каждого сеанса связи. Ну да ладно, это, в принципе не важно. Так вот, зная IP адрес других пользователей этого провайдера, вычислить Ваш IP адрес не составляет большого труда, и если ввести этот адрес куда следует, то можно увидеть, например, содержимое Вашего диска. Теперь заходим в папку Windows (или как там она у Вас называется), себе файлы.pwl и вот они все Ваши пароли. Я не буду Вам объяснять, как все это делается, хочу только сказать, что это вполне реально.

Ха, скажете Вы, кому надо взламывать мой компьютер!? Отвечаю. Существует сотни пользователей, которые постоянно сканируют сеть Internet в поисках таких ресурсов. Представте себе, что в сети Internet, в одно и то же время, находится десятки (или тысячи) пользователей Internet из Вашего города, и все они имеют IP адрес, который отличается несколькими последними цифрами. Создается специальная программа, которая осуществляет простой перебор всех возможных IP адресов и выводящая отчет о, в котором указывает IP адреса с доступными для ресурсами. Остается только себе нужную информацию с таких компьютеров. Если у Вашего провайдера не найдется таких пользователей, то никто не мешает поискать их по другим возможным IP адресам. Мораль состоит в том, что не надо открывать все файлы для других и вообще нужно немного думать головой, а когда Ваш компьютер будет взломан, то сами понимаете что может быть: И плакали Ваши денежки:

Internet Transfer Control

Раньше работа с Internet, для программистов на Visual Basic, была возможна только используя непосредственный вызов функций API. С выпуском Visual Basic 5 все изменилось в связи с включением специального ActiveX компонента Internet Transfer Control. Internet Transfer Control обеспечивает поддержку двух стандартных протоколов FTP и HTTP. Протокол HTTP позволяет Вам соединяться с серверами world wide web и получать доступ к файлам. FTP протокол позволяет получать любой вид файлов от сервера FTP Internet, а также посылать их на такие же серверы, однако, в отличие от HTTP протокола, имеет больше возможностей.

Internet Transfer Control - фактически является интерфейсом к основной Internet библиотеке Windows WININET.DLL. Эта DLL - часть Win32 API. Как Вы думаете работает Internet Explorer? Да, да, да вызывая функции из этой самой библиотеки. А зачем нам тогда этот Internet Transfer Control? Да, в принципе и не нужен, если только Вы не боитесь заблудиться в темном лесу под названием WININET.DLL и флаг Вам в руки, если это так.

Получение файлов из Internet по HTTP протоколу

Начнем, пожалуй, с самого простого - рассмотрим получение файлов из Internet по протоколу HTTP. Существует два метода используемых для получения файлов: OpenURL и Execute.

Синхронный метод. Метод OpenURL используется, чтобы получить доступ к документу в Internet и помещает его копию на локальном компьютере. URL, который передается как параметр для метода OpenURL, может быть любым документом. Все, что Вы должны определить - URL документа, который Вам требуется и тип документа icString (текстовый файл) или icByteArray (бинарный файл, для программ и архивов). Вначале посмотрим, как получить обычный текстовый файл:

Dim vData As Variant vData = Me.Inet1.OpenURL("http://www.vbnet.ru/default.asp", icString)

Итак, файл получен. Что мы можем с ним сделать? Например сохранить на своем компьютере:

Open "C:\index.htm" For Output As #1 Print #1, vData Close #1

Файл получен и сохранен, теперь его можно посмотреть в любой программе, или написать свою для его просмотра. А что? Для этого можно использовать, например, Microsoft Internet Control.

Внимание: Метод OpenURL выполняется синхронно, т.е. управление в Вашу программу будет передано только тогда, когда передача запрашиваемого файла будет завершена. Иными словами, Ваша программа будет неспособна выполняться пока идет передача файла и, если файл большой, а связь медленная, то Вы можете испытывать некоторые трудности с использованием этого метода, дело в том, что Ваша программа окажется <замороженной> на пару часиков в случае если принимаемый файл имеет внушительные размеры, ну и кому это понравится? Зато легко, но не очень хорошо, но легко.

После, того, как Вы открыли файл методом OpenURL, Вам становятся доступны некоторые его свойства, которые тоже могут быть Вам полезны.

Итак, допустим, что Вы хотите узнать размер открытого документа. Для этого используйте такой код:

SLenth = Inet1.GetHeader("Content-length")

Внимание: Метод GetHeader можно использовать только после принятия заголовка или открытия документа методом OpenURL. Если Вы захотите узнать, например размер еще не открытого документа, то произойдет ошибка. Поэтому перед приемом документа, я рекомендую узнать его заголовок. Это позволит Вам определить размер документа и контролировать прогресс его приема.

Если Вам нужно принять только заголовок документа, то воспользуйтесь следующим кодом:

Inet1.Execute , "HEAD" "задержка, пока запрос не выполнен Do If Not Inet1.StillExecuting Then Exit Do DoEvents Loop lLenthFile = CLng(Inet1.GetHeader("Content-length")) s = "Date: " & Inet1.GetHeader("Date") & vbCrLf s = s & "MIME-version: " & Inet1.GetHeader("MIME-version") & vbCrLf s = s & "Server: " & Inet1.GetHeader("Server") & vbCrLf s = s & "Content-length: " & CStr(lLenthFile) & vbCrLf s = s & "Content-type: " & Inet1.GetHeader("Content-type") & vbCrLf s = s & "Last-modified: " & Inet1.GetHeader("Last-modified") & vbCrLf Me.txtHead.Text = s

Обратите внимание на переменную lLenthFile, которая равна размеру принимаемого файла. Это нам может потребоваться в дальнейшем.

Внимание: Если принимаемый документ не бинарный файл или не HTML документ, а является ASP или другим динамически формируемым документом, то принятый заголовок может содержать искаженную информацию, например о его размере. Это связано с тем, что получить размер еще не существующего документа невозможно.

Асинхронный метод. Для того, чтобы выполнение программы не прерывалось, существует способ асинхронной передачи файлов. Давайте рассмотрим его подробнее. Для асинхронной работы существует метод Execute.

Execute метод посылает команду на отдаленный сервер Internet. Команда может быть запросом для получения, передачи файла на сервер, удаления, переименования файла и т.д. Кроме того, серверы HTTP имеют набор команд, которые позволяют Вам не, только получать или передавать файлы, но также могут передавать различную информацию о документе, сохраненном на сервере. Как только сервер получил команду, которая была передана ему Execute методом, он посылает ответ на Вашу программу, вызывая StateChanged событие Internet Transfer Control. Событие StateChanged имеет параметр, который указывает действие, которое удаленный компьютер только что выполнил. Как только это событие было вызвано, Вы можете предпринять какие либо действия в Вашей программе. В настоящее время документированы следующий команды для HTTP серверов: GET - прием файла с сервера, HEAD - прием заголовка, POST - альтернативный метод приема данных и PUT - передача данных на сервер.

Итак, допустим, что Вы запросили на сервере файл mydocument.zip. Сервер принял Вашу команду и начинает возвращать Вам данные. Для получения данных, которые были переданы на Ваш компьютер, Вам нужно обратиться к методу GetChunk. Но здесь не все так просто, дело в том, что данные передаются не все сразу, а по частям или порциями. Обычно (по умолчанию) размер каждой порции данных 1024 байт. Это означает, что, если Вы требовали файл, который имеет размер 100 Кб, то Вы должны вызвать GetChunk метод примерно 100 раз, чтобы получить все требуемые данные. Для чего это сделано? Представте себе, что Ваша программа принимает файл размером 1 Мб, а скорость Вашего соединения с Internet 19200 бод. Это означает, что Ваша программа будет принимать файл примерно в течении 10 минут. Как Вы думаете, стоит сообщать пользователю Вашей программы о том, какая часть файла уже принята и сколько осталось еще принять? Я думаю, что стоит. Более того, я сделал индикатор прогресса приема файла, чтобы пользователь мог пойти и спокойно попить, например кофе.

Да, кстати, если Вы думаете, что сервер всегда должен Вам возвратить данные, то Вы глубоко заблуждаетесь. Если Вы захотите удалить файл на сервере и пошлете ему правильную команду, то сервер сразу же скажет OK и удалит этот файл. А вот данных Вы от него никаких тогда не получите, но событие StateChanged произойдет и параметр State примет значение icResponseCompleted. Значит все в норме, и запрос был успешно выполнен.

Фух: Кажется все написал, теперь давайте посмотрим на код. Обратите внимание, что прием данных ведется в переменую vtData(), имеющую тип Byte. Это сделано для того, чтобы можно было принимать любые типы файлов: текстовые и бинарные. С той же целью метод GetChunk вызывается с параметром icByteArray:

Private Sub Inet1_StateChanged(ByVal State As Integer) Dim vtData() As Byte Dim intFile As Long Select Case State "здесь можно обрабатывать другие события Case icResponseCompleted "12 "открываем файл для записи принимаемых данных intFile = FreeFile Open Me.txtFileName For Binary Access Write As #intFile "принимаем первую порцию данных vtData = Inet1.GetChunk(1024, icByteArray) Do While LenB(CStr(vtData)) > 0 Put #intFile, vtData "следующая порция данных vtData = Inet1.GetChunk(1024, icByteArray) UpdateStatus Seek(1) Loop Put #intFile, vtData Close #intFile End Select Me.stb.SimpleText = GetConnectionState(State) End Sub

Еще хочу, чтобы Вы посмотрели на код процедуры UpdateStatus. Она отвечает за вывод информации о прогрессе приема файла. Для этого используется глобальная переменная lLenthFile, содержащая размер документа на сервере и передаваемый размер уже принятых данных. Процедура очень простая и служит только для того, чтобы записать в строку состояния, сколько принято данных в процентах от их общего количества.

Sub UpdateStatus(lRec As Long) Dim i As Long i = lRec * 100 / lLenthFile Me.stb.SimpleText = "Принято: " & i & "%" DoEvents End Sub

И ничего нет здесь сложного. Так, теперь мы знаем для чего нужно событие StateChanged и давайте посмотрим, какую информацию мы можем еще получать, используя его.

Константа Значение Описание
icNone 0 Информация о состоянии не доступна
icResolvingHost 1 Поиск IP адреса сервера
icHostResolved 2 IP адрес сервера найден
icConnecting 3 Соединение с сервером
icConnected 4 Соединился с сервером
icRequesting 5 Запрос информации с сервера
icRequestSent 6 Запрос на сервер успешно отправлен
icReceivingResponse 7 Получение ответа от сервера
icResponseReceived 8 Ответ от сервера был успешно принят
icDisconnecting 9 Отключение от сервера
icDisconnected 10 Отключение от сервера выполнено
icError 11 Произошла ошибка во время сеанса связи с сервером
icResponseCompleted 12 Запрос выполнен, все данные получены

Ну вот, мы видим 12 различных состояний, которые можно обрабатывать. Я настоятельно рекомендую Вам написать специальную функцию, которая бы возвращала по коду (от 0 до 12) его описание. Кроме того можно сделать поддержку двух или более языков, на которых будут выводиться сообщения. В небольшом примере к этой статье есть функция, которая возвращает эту информацию на двух языках: руссом и английском. В реальной программе я бы пошел еще дальше и перевел бы все это в файл ресурсов, так лучше, но в примере делать это нецелесообразно. Что же касается кода этой функции, то я не хочу его здесь приводить, так он достаточно объемен и, в то же время, очень простой.

Заключение

В этой статье я рассказал Вам, как можно использовать Ваш любимый язык программирования для передачи файлов в сети Интернет. Однако, я описал только использование HTTP протокола, который, в отличие от другого FTP протокола обладает большей гибкостью в использовании. Но это уже совсем другая история.