Я работаю над простой программой для передачи файлов и папок в c # с использованием протокола tcp.
Метод, который я использую для передачи файла, состоит в том, чтобы разделить его на маленькие кусочки. Каждая из этих частей будет закодирована в Base64 и вставлена в более сложное сообщение JSON, которое затем будет отправлено на другую сторону. Так что каждое сообщение всегда будет в текстовом виде благодаря Base64.
У меня нет большого опыта работы с сетями, и я решил сделать этот выбор, потому что чтение в Интернете, отправка потока байтов без какого-либо кодирования может привести к тому, что некоторая часть сообщения может быть интерпретирована маршрутизатором или брандмауэром как команда, рискующая прервать соединение.
Моя проблема в том, что мое программное обеспечение также работает с очень большими файлами (> 10 ГБ), а кодировка base64 только увеличивает размер данных и делает передачу очень медленной, потому что процессор так много работает для непрерывного кодирования / декодирования.
Теперь я хотел бы знать:
- Правда ли, что, например, отправка простого файла, преобразованного только в байты, без предварительного кодирования в каком-либо формате, рискует вызвать проблемы на маршрутизаторе или брандмауэре?
- Правильно ли использовать Base64 для передачи больших файлов?
- Есть ли лучшие альтернативы?