Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
3 / 2 / 2
Регистрация: 24.05.2016
Сообщений: 248

Как отправить файл по tcp весом больше 8 кб

16.07.2017, 21:33. Показов 3497. Ответов 20
Метки tcp (Все метки)

Студворк — интернет-сервис помощи студентам
Понадобилось отправить бд клиенту с сервера, но бд весит не много(не больше 50 мб). Насколько я знаю отправлять файл можно только весом < 8 КБ, как обойти это ограничение?

Добавлено через 14 секунд
Всем заранее спасибо!

Добавлено через 3 часа 23 минуты
up up up
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.07.2017, 21:33
Ответы с готовыми решениями:

Отправить целый файл по tcp
какая есть функция для передачи не массива байтов а целого файла по tcp например JPEG txt?? можете фрагмент кода привести как по tcp...

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

Как отправить ответ клиенту с сервера TCP?
Посмотрите пожалуйста эти Клиент и Сервер. Я отправляю команду серверу с просьбой отправить данному клиенту файл, но как передать экземпляр...

20
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
17.07.2017, 08:53
Цитата Сообщение от FastMailSend Посмотреть сообщение
Насколько я знаю отправлять файл можно только весом < 8 КБ
Нет в TCP такого ограничения, можно хоть 8 петабайт отправлять.
1
3 / 2 / 2
Регистрация: 24.05.2016
Сообщений: 248
17.07.2017, 10:13  [ТС]
Спасибо, можете дать пример, я не нашел. Видимо плохо искал
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
17.07.2017, 10:32
Читаешь файл в буфер (возможно, частями) и отправляешь по TCP функцией send.
Вот и весь рецепт. Тут важно на каждом шаге проверять, какое значение вернула send.
Потому что может возникать ситуация, что байт отправлено меньше, чем передано.
Ну или функция может вернуть 0 (на той стороне закрыли соединение) или -1 (ошибка).
1
3 / 2 / 2
Регистрация: 24.05.2016
Сообщений: 248
17.07.2017, 12:11  [ТС]
А как на клиенте из буфера создать файл?

Добавлено через 1 час 4 минуты
Если не сложно киньте статью или пример кода, большое вам спасибо!
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
17.07.2017, 12:43
FastMailSend, я на WCF через TCP передавал большие файлы. Поищите по форуму, тут где-то есть пример того приложения.
1
3 / 2 / 2
Регистрация: 24.05.2016
Сообщений: 248
18.07.2017, 18:19  [ТС]
Не нашел, извините:c

Добавлено через 17 часов 3 минуты
Есть у кого примерчик?

Добавлено через 3 часа 19 минут
Есть у кого идеи или надо на Socket переписывать?
0
HF
 Аватар для HF
1311 / 889 / 200
Регистрация: 09.09.2011
Сообщений: 2,639
Записей в блоге: 2
18.07.2017, 20:31
Цитата Сообщение от FastMailSend Посмотреть сообщение
или надо на Socket переписывать?
У вас разве что-то написано уже? Покажите код, покажите проблему - получите помощь, мнения, комментарии.
0
3 / 2 / 2
Регистрация: 24.05.2016
Сообщений: 248
18.07.2017, 22:14  [ТС]
Просто я знаю, что на сокетах есть SendFile, аналога в TcpClient не видел (надо в буфер файл читать а потом отправлять).
Помощь нужна в составлении кода для сервера и клиента, т.к. я этим ни разу не занимался и не представляю, как это сделать. Примеров РАБОЧИХ не нашел.
0
 Аватар для eXeShnik
20 / 20 / 14
Регистрация: 12.02.2016
Сообщений: 75
21.07.2017, 00:09
FastMailSend, TcpClient - клас, наследуемый от Socket, а значит SendFile в нём есть.
Пример:
C#
1
2
TcpClient tcp = new TcpClient("127.0.0.1",3030);
tcp.Client.SendFile("file.txt");
1
3 / 2 / 2
Регистрация: 24.05.2016
Сообщений: 248
23.07.2017, 13:15  [ТС]
нашел 2 функции:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        public void SendFile(string path)
        {
            using (FileStream stream = new FileStream(path, FileMode.Create, FileAccess.ReadWrite))
            {
                // Buffer for reading data
                Byte[] bytes = new Byte[1024];
 
                int length;
                
                while ((length = stream.Read(bytes, 0, bytes.Length)) != 0)
                {
                    netStream.Write(bytes, 0, length);
                }
            }
            netStream.Close();
        }
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public static void Receive(string FileName)
        {
            byte[] RecData = new byte[1024];
            int RecBytes;
            bool tick = true;
            while(tick )
            {
                        netStream = client.GetStream();
 
                        if (FileName != string.Empty)
                        {
                            int totalrecbytes = 0;
                            FileStream Fs = new FileStream(FileName, FileMode.OpenOrCreate, FileAccess.Write);
                            while ((RecBytes = netStream.Read(RecData, 0, RecData.Length)) > 0)
                            {
                                Fs.Write(RecData, 0, RecBytes);
                                totalrecbytes += RecBytes;
                            }
                            Fs.Close();
                        }
                        netStream.Close();
                        client.Close();
                        tick = false;
            }
        }
проверьте пожалуйста на наличии ошибок, спасибо

Добавлено через 18 часов 54 минуты
up up
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18262 / 14187 / 5366
Регистрация: 17.03.2014
Сообщений: 28,872
Записей в блоге: 1
23.07.2017, 14:54
FastMailSend, в методе SendFile вместо FileMode.Create нужно использовать FileMode.Open. И FileAccess достаточно Read указать. В .NET 4+ метод можно упростить с помощью Stream.CopyTo.

В методе Receive тоже ошибка с FileCreate - нужен FileMode.Create вместо FileMode.OpenOrCreate. Также стоит убрать цикл while и ненужные переменные tick, totalrecbytes.
1
3 / 2 / 2
Регистрация: 24.05.2016
Сообщений: 248
23.07.2017, 14:56  [ТС]
сам нашел еще 1 ошибку в методе Recieve вынесите из for
C#
1
fs.Close
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18262 / 14187 / 5366
Регистрация: 17.03.2014
Сообщений: 28,872
Записей в блоге: 1
23.07.2017, 15:05
FastMailSend, ты о чем? В методе Receive нет цикла for и вызов fs.Close() стоит на своем месте.
0
3 / 2 / 2
Регистрация: 24.05.2016
Сообщений: 248
23.07.2017, 19:02  [ТС]
перепутал for и if, извиняюсь

Добавлено через 4 минуты
Оказывается, отправляя на сайт я уже поправил код, а в vs не поправил)
0
3 / 2 / 2
Регистрация: 24.05.2016
Сообщений: 248
26.07.2017, 16:37  [ТС]
Еще 1 вопросик: я передал файл бд sqlite, пытаюсь его прочитать с помощью любого редактора, но просит пароль, который я не ставил. Ах да ошибка "Database disk image is malformed ..." появляется при попытке прочитать его.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18262 / 14187 / 5366
Регистрация: 17.03.2014
Сообщений: 28,872
Записей в блоге: 1
26.07.2017, 17:13
FastMailSend, надо думать что файл был передан с ошибкой. Для уверенности сравни хеши файлов с помощью команды
Windows Batch file
1
certutil -hashfile имяФайла sha1
1
3 / 2 / 2
Регистрация: 24.05.2016
Сообщений: 248
28.07.2017, 14:31  [ТС]
Ничего не понимаю..
Хеши одинаковые, даже с помощью других программ проверял, но хеш 1 файла и хеш 2 совпадают.

Чет тут нечисто.

Добавлено через 17 часов 4 минуты
Есть еще предложения?

Добавлено через 1 минуту
А сегодня открыл и не просит пароля, что за фигня...
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18262 / 14187 / 5366
Регистрация: 17.03.2014
Сообщений: 28,872
Записей в блоге: 1
28.07.2017, 14:32
FastMailSend, Чет тут нечисто
0
3 / 2 / 2
Регистрация: 24.05.2016
Сообщений: 248
28.07.2017, 21:39  [ТС]
Есть догадки, ребят?

Добавлено через 36 минут
Произошло чудо и он больше не просит пароль, но ошибка все еще есть(такая же)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.07.2017, 21:39
Помогаю со студенческими работами здесь

Как отправить сообщение по tcp протоколу без присоединения
Пользуюсь clientsocket но проблема в том что он не дает отправить сообщение пока не соединен с сервером.Подскажите как решить это проблему!

TCP/IP клиент-сервер (не знаю как отправить текст от сервера к клиенту)
Помогите пожалуйста научился отправлять от клиента к серверу но наоборот никак не получается пожалуйста помогите. До сдачи осталось 3 дня

Как отправить POST больше 1 раза
Доброго времени суток. Пишу приложение сугубо для семейного использования. Имеется домашний сервер, который обрабатывает запросы моего...

Картинка выводится весом в 10 раз больше исходной
Картинка выводится весом в 10 раз больше исходной $im = ImageCreateFromJPEG$image); $white = ImageColorAllocate($im, 255, 255, 255);...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK сделайте это, JDK, то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Перейдите по ссылке:. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru