Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.09.2012, 10:11   #1
grorg
 
Регистрация: 03.03.2011
Сообщений: 3
По умолчанию Передача файла по сокетам

Привет.
Пишу клиент-сервер на ServerSocket/ClientSocket, реализовал передачу файлов. Но появилась проблема:
перед тем как отправить сам файл, отправляю (с сервера на клиент)
инфу о файле (имя файла), потом сам файл.

Код:
Server.Socket.Connections[0].SendText(FileName);
...
Server.Socket.Connections[0].SendStream(MS);
на клиенте принимаю инфу

Код:
RecText := Socket.ReceiveText;
...
//потом сам поток
и здесь появляется проблема:
сначала приходит имя файла норм, а за ним сразу же непонятный набор символов "PK" и три квадратика, из-за чего не могу сохранить файл (т.к. имя получается из имени файла+набор символов).
Сам поток доходит без проблем.
В чем может быть причина появления данных символов?
grorg вне форума Ответить с цитированием
Старый 19.09.2012, 10:31   #2
xoodoo
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 212
По умолчанию

Цитата:
В чем может быть причина появления данных символов?
В поточной природе TCP.
xoodoo вне форума Ответить с цитированием
Старый 19.09.2012, 10:40   #3
grorg
 
Регистрация: 03.03.2011
Сообщений: 3
По умолчанию

Цитата:
Сообщение от xoodoo Посмотреть сообщение
В поточной природе TCP.
Ну да, ты прям мою проблему на корню присек и решил... спс!
grorg вне форума Ответить с цитированием
Старый 19.09.2012, 14:13   #4
xoodoo
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 212
По умолчанию

Проблема у тебя одна - ты не можешь или не хочешь вникнуть в смысл сказанного.
xoodoo вне форума Ответить с цитированием
Старый 19.09.2012, 14:21   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
В чем может быть причина появления данных символов?
В блочной передаче данных. Пакеты передаются порциями а не полностью:
http://delphiworld.narod.ru/base/soc...ne_blocks.html
в ИНДИ эта проблема решена, в классических сокетах нет.
Из всех решений что я видел в инете толком ни одно не дало 100% результат, так что только переход на ИНДИ или WINAPI могу порекомендовать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.09.2012, 23:18   #6
xoodoo
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 212
По умолчанию

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

Цитата:
в ИНДИ эта проблема решена
Это вообще не проблема.

Цитата:
Из всех решений что я видел в инете толком ни одно не дало 100% результат
Будем считать что ты вообще не видел решений.
А те что ты якобы видел - их наверняка советовали такие же дилетанты.

Последний раз редактировалось xoodoo; 19.09.2012 в 23:20.
xoodoo вне форума Ответить с цитированием
Старый 20.09.2012, 07:19   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
в ИНДИ эта проблема решена, в классических сокетах нет
А с чего это должно решатся на уровне сокетов? Сокеты ниже уровнем чем TCP.
p51x вне форума Ответить с цитированием
Старый 20.09.2012, 07:34   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А с чего это должно решатся на уровне сокетов?
Это я автору сказал, потому что он сокеты решил использовать. Так сказать для сравнения.
Цитата:
Будем считать что ты вообще не видел решений.
Ага, ага... Я таких как ты видел. Знаем мы твою болячку.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.09.2012, 19:41   #9
xoodoo
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 212
По умолчанию

Цитата:
Сокеты ниже уровнем чем TCP
Строго наоборот - выше.
xoodoo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача файла by_Trojan C# (си шарп) 6 03.05.2012 12:26
Передача файла xil C# (си шарп) 0 14.11.2011 19:00
Передача файла по сокетам bigmak Помощь студентам 1 24.03.2009 12:50
Передача файла.... prizrak1390 Работа с сетью в Delphi 1 23.12.2008 09:58