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

FileTransfer Передача файлов. Часть третья. Клиент.

Ну что же, пожалуй начнем путешествие.Для начала нам нужно выполнить стандартные действия по настройке сокета, затем вычислить CRC32 сумму передаваемого файла, передать заголовок, а за ним отправить и сам файл. Код:

void RunClient(char *szIp,char *fName)
{
        SOCKET s = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
        SOCKADDR_IN ssin = {0};
        ssin.sin_family = AF_INET;
        ssin.sin_addr.s_addr = inet_addr(szIp);
        ssin.sin_port = htons(port);
        connect(s,(SOCKADDR *)&ssin,sizeof(ssin));

        TFileStruct fs = {0};
        fs.dwCRC32 = CRC32(fName);

        DWORD dwRB;
        HANDLE hFile = CreateFileA(fName,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,NULL,NULL);
        strcpy(fs.fName,fName);
        fs.fSize = GetFileSize(hFile,NULL);

        DWORD dwStep = fs.fSize / 11;
        DWORD dwCurSend = 0;
        printf("Progress: [");

        send(s,(char *)&fs,sizeof(TFileStruct),0);

        char szBuffer[1024];
        do 
        {
                memset(szBuffer,0,sizeof(szBuffer));
                ReadFile(hFile,szBuffer,sizeof(szBuffer),&dwRB,NULL);
                send(s,szBuffer,dwRB,0);

                dwCurSend += dwRB;
                if(dwCurSend >= dwStep)
                {
                        dwCurSend = 0;
                        printf(" * ");
                }
        } while (dwRB > 0);

        printf("]\n");

        CloseHandle(hFile);

        closesocket(s);
}

Вот таким образом это выглядит. Сначала заполняем заголовок, а потом в цикле, читаем и отсылаем части файла пока считанных из файла байт больше нуля. Переменные dwStep и dwCurSend используются для отображения некой статистики — графически показывающей, сколько данных отправлено, а сколько ожидает. А вот и весь код: ftransfer. Там реализован также мини-интерфейс пользователя (насколько это было возможно для консоли). Основной недостаток этого софта — для поднятия сервера требуется прямой IP адрес. Однако я использую этот софт вместе с хамчей, и мне всегда удобно принимать/отправлять эти файлы без ожидания и прямо тому, кому надо.

tt twitter big4 Передача файлов. Часть третья. Клиент. tt digg big4 Передача файлов. Часть третья. Клиент. tt facebook big4 Передача файлов. Часть третья. Клиент. tt gmail big4 Передача файлов. Часть третья. Клиент. tt myspace big4 Передача файлов. Часть третья. Клиент. tt reddit big4 Передача файлов. Часть третья. Клиент.

Оставить комментарий

CAPTCHA изображение
Обновить изображение
*

RSS-подписка NIG Twitter-подписка NIG

Метки
Друзья
Блог линуксоида Программы для диагностики компьютера
Супер Pixel
Убивалка флешаБэкконект шелл. Часть вторая.Бэкконект шелл. Начало.НАМ для деления чиселПростая арифметикаПередача файлов. Часть третья. Клиент.Dll injectionСканер портовКодировка текста в BMPРухнул на два дняПередача файлов. Часть вторая. Сервер.Поворот и BMPCRC32 суммаBMP форматфайловые вирусыассемблер, строкиАссемблер и матрицапримеры ассемблерМногопоточное программированиеАрхитектура клиент — серверРаздача ICQПишем шуткупишем паукаПривет от ДжеймсаОбход firewallЗагрузка картинок на Gyazo, прямо из ThunarКейлоггер 3Плюшки в контекстном меню Thunarc по сетиКейлоггер 2КейлоггерСкачать Ассемблер!VirusCheckerОтморозки мешают жить ?! Не проблемма !Cкрипты для взлома аккаунтов QIPWinAPI. Работа с файлами. Часть третья. ЧтениеDlink exploitБрут сайта etxt.ruКрасивая раскладка клавиатуры в GnomeМои безделушки на PerlКак запускать Perl скрипты под WindowsБрутфорс партнёрки ZipCoinПарсер upwap.ruИзменения в блогеЧудо ЗаливалкаСкрипт для загрузки файлов на Zalil.ruЯндекс «чоткий» поисковик!WinAPI. Работа с файлами. Часть вторая. ЗаписьWinAPI. Работа с файлами. Часть первая. ПоискПолучение MD5 хеша средствами C++Что нам стоить letitfile.com забрутить?WarCraft III запуск под LinuxЭнтропия файлаWinsock и C++. Мини прокси. Часть |\\/. Завершающая.Перепилил чекер для 4gameЧекер акаунтов YoupornCMailSend v 1.1. Отправка почы без проблемСлучайные числаWinsock и C++. Часть |||. smtp монстр.Брутфорс LetitFile.comИспользование X-Forwarded-For, для обмана веб-сервера, подмена IP подручными средствамиДело было вечером, делать было нечего…Мысли о аудио сервереПарсер ников из твиттераКонец школоло…Perl+Linux. Заметка первая (Удобный Paste bin).Бэкконект шелл.E-MAIL + winsocket + Cpp. Сложно?winsock и C++. Часть ||. Атака клоунов.C++ резолвинг адресаPerl, анализ HTML кода и определение CMSМатематика в C++winsock и C++