Форум программистов, компьютерный форум, киберфорум
Delphi: Сети
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
5 / 5 / 0
Регистрация: 02.01.2013
Сообщений: 438
1

Отправка огромных файлов по socket

09.07.2015, 05:22. Показов 2397. Ответов 34
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем очередной привет Уделив поискам очень достаточно много время (ну как и всегда) для решения моей проблемы, не привело не к чему хорошему. А точнее я понял, что при отправке больших файлов, они приходят клиенту разбитые на разные по своему размеру части, которые потом нужно объединять каким-то образом и т.д., так я по находил и примеры которые ни каким образом не собираются отправлять файлы (а точнее файл) размером 5-10 гб. Так вот, есть у кого нибудь решение этой проблемы был бы очень признателен

P.S. Желательно не советовать FTP!
P.S.S. Я буду отправлять обычные текстовые документы с легка не обычным форматом (.result), не бинарники!
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.07.2015, 05:22
Ответы с готовыми решениями:

Отправка файлов через non blocking socket
доброго времени суток. пытаюсь реализовать отправку файлов через nonblocking socket в справке по...

Клиент и Сервер, Отправка Файлов. Socket
Задача в том, чтобы написать Клиент и Сервер, используя сокеты. В языке Java. Клиент должен...

Чтение огромных файлов
Необходимо выполнять работу с огромными файлами(например в несколько Гб), чтобы после чтения...

Запись огромных файлов
Надо очень большой файл забить генерируемой инфой. Есть два варианта: Через проекцию; Записывать...

34
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
13.07.2015, 13:16 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от alex-rudenkiy Посмотреть сообщение
и дописывал в файл при приёме
О каком приеме может идти речь, если у тебя якобы ни одно из событий на принимающей стороне не возбуждается ?
Прием-то имеет смысл не раньше чем возникнет событие On[Client]Read - именно оно сигнализирует о том что для чтения доступны некие данные, поступившие от партнера по соединению ..
0
5 / 5 / 0
Регистрация: 02.01.2013
Сообщений: 438
13.07.2015, 13:22  [ТС] 22
Цитата Сообщение от krapotkin Посмотреть сообщение
и rewrite(f) тут же стирал все что было в этом файле ))
Не, rewrite у меня на самом деле в проге висит на событии formcreate

Добавлено через 1 минуту
Цитата Сообщение от mss Посмотреть сообщение
О каком приеме может идти речь, если у тебя якобы ни одно из событий на принимающей стороне не возбуждается ?
Прием-то имеет смысл не раньше чем возникнет событие On[Client]Read - именно оно сигнализирует о том что для чтения доступны некие данные, поступившие от партнера по соединению ..
Поправочка приходит инфа на серв и записывается в файл при срабатывании ServerSocket1ClientRead
0
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
13.07.2015, 13:39 23
Цитата Сообщение от alex-rudenkiy Посмотреть сообщение
при срабатывании ServerSocket1ClientRead
То у тебя ни одно событие не срабатывает, теперь выясняется что ServerSocket1ClientRead все-таки срабатывает ..
Чего тогда ты нас тут за нос водишь ?)
0
5 / 5 / 0
Регистрация: 02.01.2013
Сообщений: 438
13.07.2015, 13:53  [ТС] 24
Да с обычным sendtext всё отлично, а вот когда я хотел отправлять sendstream то ни один из событий не срабатывает
0
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
13.07.2015, 13:56 25
Цитата Сообщение от alex-rudenkiy Посмотреть сообщение
хотел отправлять sendstream то ни один из событий не срабатывает
А в #13 я с кем говорил, со стенкой ?)
0
5 / 5 / 0
Регистрация: 02.01.2013
Сообщений: 438
13.07.2015, 14:30  [ТС] 26
А примерчик можно ?

Добавлено через 3 минуты
Цитата Сообщение от krapotkin Посмотреть сообщение
var buffstr : TStringStream; begin buffstr := TStringStream.Create; buffstr.WriteString('zxc'); buffstr.position:=0; clientsocket1.Address := '127.0.0.1'; clientsocket1.Port := 5555; clientsocket1.Socket.SendStream(buffstr); buffstr.free; end;
Вот тут же stream не пустой же, но всё равно не срабатывает
0
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
13.07.2015, 14:33 27
Цитата Сообщение от alex-rudenkiy Посмотреть сообщение
ут же stream не пустой же
Ты ж его своими же ручками и пытаешься уничтожить в строке buffstr.free, еще до того как он будет отправлен)
0
5 / 5 / 0
Регистрация: 02.01.2013
Сообщений: 438
13.07.2015, 14:39  [ТС] 28
так минутку, попробуем заново запустить

Добавлено через 4 минуты
Цитата Сообщение от mss Посмотреть сообщение
Ты ж его своими же ручками и пытаешься уничтожить в строке buffstr.free, еще до того как он будет отправлен)
То есть мне нужно не уничтожать buffstr?
0
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
13.07.2015, 15:09 29
Цитата Сообщение от alex-rudenkiy Посмотреть сообщение
мне нужно не уничтожать buffstr?
Его нужно уничтожать только если при вызове метода SendStream возникло исключение

Ты вообще топик читаешь ? Я об этом еще в #15 сказал
0
5 / 5 / 0
Регистрация: 02.01.2013
Сообщений: 438
13.07.2015, 15:23  [ТС] 30
Цитата Сообщение от mss Посмотреть сообщение
Ты вообще топик читаешь ? Я об этом еще в #15 сказал
Не надо мне тут ля-ля я каждое сообщение читаю

Добавлено через 2 минуты
крч я не знаю от куда у меня руки растут, но тут явно должно всё работать
сервер :
Delphi
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
26
27
28
29
30
31
32
33
procedure TForm1.Button1Click(Sender: TObject);
begin
 ServerSocket1.Active := true;
end;
 
procedure TForm1.ServerSocket1Accept(Sender: TObject; Socket: TCustomWinSocket);
begin
  showmessage('lol');
end;
 
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
   showmessage('lol');
end;
 
procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
 showmessage('lol');
end;
 
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
 showmessage('lol');
end;
 
procedure TForm1.ServerSocket1ClientWrite(Sender: TObject;
  Socket: TCustomWinSocket);
begin
 showmessage('lol');
end;
клиент :
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.Button1Click(Sender: TObject);
var
  buffstr: TStringStream;
begin
  buffstr := TStringStream.Create;
  buffstr.WriteString('zxc');
  buffstr.position := 0;
  ClientSocket1.Address := '127.0.0.1';
  ClientSocket1.Port := 5555;
  ClientSocket1.Socket.SendStream(buffstr);
  //buffstr.free;
end;
0
5 / 5 / 0
Регистрация: 02.01.2013
Сообщений: 438
13.07.2015, 15:27  [ТС] 31
Вы говорите что он пустой, ну вот там есть мои буковки
Миниатюры
Отправка огромных файлов по socket  
0
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
13.07.2015, 15:40 32
Цитата Сообщение от alex-rudenkiy Посмотреть сообщение
тут явно должно всё работать
С какого перепугу ?
Где у тебя собственно активация клиентского сокета ? В упор ее не вижу ..
Вижу назначение целевого адреса и порта, а потом сразу - хрясь ! - СендСтрим..
Ни здрасте, ни поцеловать))

Он что, волшебным образом с сервером должен соединиться, твой клиентский сокет ?

Не по теме:

Цитата Сообщение от alex-rudenkiy Посмотреть сообщение
я не знаю от куда у меня руки растут
Ну теперь ты уже догадываешься откуда ?)

0
5 / 5 / 0
Регистрация: 02.01.2013
Сообщений: 438
13.07.2015, 16:52  [ТС] 33
Цитата Сообщение от mss Посмотреть сообщение
Ну теперь ты уже догадываешься откуда ?)
Ну это, да

Добавлено через 2 минуты
Ой блин, яш совсем забыл про activate, жёсткий facepalm

Добавлено через 58 секунд
Как же так можно было забыть
0
2664 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
13.07.2015, 19:28 34
Но если ты не активировал сокет, ты должен был при попытке отправки или получении неважно чего, неважно куда, откуда и как получить сообщение об исключении)
0
5 / 5 / 0
Регистрация: 02.01.2013
Сообщений: 438
14.07.2015, 17:32  [ТС] 35
Всё отлично, спс за ответы
0
14.07.2015, 17:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.07.2015, 17:32
Помогаю со студенческими работами здесь

Обработка огромных файлов
Есть 2 файла бд по 130 млн записей, один вида: id:hash, второй hash:unhash Задача такова, значение...

Сравнение двух огромных (!) файлов
Привет. Потребовалось сравнивать текстовые файлы (несколько файлов сравниваются с другим): Файл...

Как организовать чтение ОГРОМНЫХ (>2Gb) файлов?
Подскажите пожалуйста каким образом организовать чтение больших текстовых файлов в VB.NET. Размеры...

Чтение и запись в двумерный массив огромных файлов
Если в кратце то есть очень большой файла в длину и ширину. Написал программку ,но когда слишком...


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

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru