powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Слить файлы на WinAPI
11 сообщений из 11, страница 1 из 1
Слить файлы на WinAPI
    #34166685
needjava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Вопрос такой: Есть файлы 3 штуки. Мне нужно слить их в один файл - который я передам по сетке, после чего его надо будет разложить-опять на 3 файла. Все файлы бинарики.
При этом я хочу использовать только windows API. Как это лучше сделать?
...
Рейтинг: 0 / 0
Слить файлы на WinAPI
    #34166711
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
needjavaя бы архиватором делал
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Слить файлы на WinAPI
    #34166819
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WinSock, tcp. Использовать заголовок, перед данными, в котором будет описано, что это - начались данные + имя файла, идут данные, закончились данные.
...
Рейтинг: 0 / 0
Слить файлы на WinAPI
    #34169913
needjava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, я поступил следующим образом:
каждый файл кодирую в BASE64, затем все три по очереди записываю в новый файл с помощью
Код: plaintext
1.
2.
3.
...
std::string encoded = ... + "#";   // сюда файлы кодированные в base64 пишу
...
WriteFile (hFile1, encoded.data(), encoded.length(), &dwRWBytes, NULL);


Между файлами ставлю символ #.
На другом конце читаю файл в строку:
Код: plaintext
1.
2.
3.
4.
std::string str;
DWORD  file_size = GetFileSize(hFile2,NULL);
str.resize(file_size);
::ReadFile(hFile2, &str[ 0 ], file_size, &dwReadBytes, NULL);


А получившуюся строку раскладываю на 3 и снимаю base64.

Но возникает в таком случае проблема:
— с файлами по 30-50 кб работает нормально,
— с файлами больше 1 мб — вылетает на resize — слишком длинная строка — это в принципе понятно.
а вот когда подсовываю файлик в 110 кб — никаких ошибок не вылетает, но в str — ничего не записывается... — непонятно почему???
...
Рейтинг: 0 / 0
Слить файлы на WinAPI
    #34169919
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зачем такой гемор?

отправляй сначала 8 байтт размер первого файла и отправляй побайтово сам файл.
затем также для остальных двух.

и всё.

это если я правильно понял задачу :)
...
Рейтинг: 0 / 0
Слить файлы на WinAPI
    #34170029
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И лучше все таки использовать протокол.

Первый байт комманда:
0 - задать идентификатор файлу
1 - данные файла
2 - конец передачи файла

0:
Первый байт - id фала, остальные - имя файла

1:
Первый байт - id файла, остальные - данные файла

2:
Первый байт - id файла.

Есстественно, передовать все именно по tcp, - гаранития доставки и очередности пакетов.

Можно расширить протокол, добавлять длины блоков, флаги, почему закончилась предача. Дополнительные комманды о количестве передаваемый файлов и т.д. и т.п.
...
Рейтинг: 0 / 0
Слить файлы на WinAPI
    #34170139
needjava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если честно, я не совсем понимаю, как это через протокол реализовать?. И потом, когда я этот файл из трех создаю - еще неизвестно куда его отправлять и когда.
...
Рейтинг: 0 / 0
Слить файлы на WinAPI
    #34170257
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
needjavaЕсли честно, я не совсем понимаю, как это через протокол реализовать?. И потом, когда я этот файл из трех создаю - еще неизвестно куда его отправлять и когда.

Это информация для приемника, что за файл к нему льется. В такой схеме не надо все в один файл сливать.

Ты хочешь все данные слить в кашу, а приемник с этим должен будет разбираться. Тебе это надо?
...
Рейтинг: 0 / 0
Слить файлы на WinAPI
    #34170345
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ему java нада :)
...
Рейтинг: 0 / 0
Слить файлы на WinAPI
    #34170401
needjava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
дык приемник тоже мой будет(мною написан)
...
Рейтинг: 0 / 0
Слить файлы на WinAPI
    #34170734
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
needjavaдык приемник тоже мой будет(мною написан)

Ты спрасил, как лучше это реализовать. Я тебе ответил.

Считаю плюсами (на вскидку):
+ не сваливается все в кашу.
+ возможность для расширения.
+ повторная использованность в других приложениях.
+ реализация алгоритма в виде класса, использование его на серере и клиенте, не задумываясь, над реализацией протокола.
+ возможность определения достоверности данных при передаче (расширение).
+ возможность передачи вспомогательных данных
ну, т.д. можно еще попридумывать.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Слить файлы на WinAPI
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]