Модераторы: feodorv

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> передача файлов по TCP 
:(
    Опции темы
JohnnyQ
Дата 23.4.2008, 01:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 22.7.2007
Где: Санкт_Петербург

Репутация: нет
Всего: нет



Добрый день!
Я пишу программу по передаче файлов через TCP. Более-менее настроил клиента и сервера: они обмениваются сообщениями, теперь нужно добавить передачу любого файла между ними. Нашел в сети примерную прогу, но там передача файла сделана как-то совсем уж коряво, до и передает только текстовые файлы... 
Вопрос: С помощью каких функций лучше всего передавать файл?  может у кого пример есть с описанием?
PM MAIL   Вверх
jonie
Дата 23.4.2008, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 5
Всего: 118



точно также как ты обмениваешься сообщениями. файл ничем не отличается от сообщения.


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
ExMike
Дата 30.4.2008, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 22.9.2007

Репутация: нет
Всего: нет



удаленно

Это сообщение отредактировал(а) ExMike - 2.5.2008, 15:46
PM MAIL   Вверх
bel_nikita
Дата 30.4.2008, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 1
Всего: 47



Нафига TCP, если есть FTP? smile


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
ExMike
Дата 30.4.2008, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 22.9.2007

Репутация: нет
Всего: нет



дайте пример обменна сообщениями,прост совсем не давно начал с сетью работать
простой
if(buf == "messagge"); не хочет работать,или как правильнее? smile 
PM MAIL   Вверх
Олег2005
Дата 30.4.2008, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 421
Регистрация: 26.5.2005
Где: Рига Латвия

Репутация: 6
Всего: 11



JohnnyQ
Стандартная функция интерфейса сокетов для передачи файлов - это send()
Она шлет содержимое своего буфера - и ей по барабану, что вы в буфер положили - она шлет байты.
В Winsock 2.0 есть две специальные функции - TransmitFie() и TransmitPacket().
Открывается нужный файл, передается его хендл и все - функция сама все передаст.
PM MAIL WWW MSN   Вверх
ExMike
Дата 30.4.2008, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 22.9.2007

Репутация: нет
Всего: нет



удаленно

Это сообщение отредактировал(а) ExMike - 2.5.2008, 15:48
PM MAIL   Вверх
MAKCim
Дата 1.5.2008, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 6
Всего: 207



Цитата(bel_nikita @  30.4.2008,  11:58 Найти цитируемый пост)
Нафига TCP, если есть FTP?

не путайте понятия
TCP - это транспортный уровень, а FTP - прикладной
FTP не получится использовать без протокола транспортного уровня (TCP, UDP, ...)

Это сообщение отредактировал(а) MAKCim - 1.5.2008, 15:37


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
sergu
Дата 5.5.2008, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 22
Регистрация: 19.9.2006

Репутация: нет
Всего: нет



Короче, открываешь файл в бинарном режиме. Читаешь его кусочками, например по 1024 байт в буфер, и отправляешь его. Потом получаешь этот кусочек файла, и дозаписываешь его в конец целевого файла.
PM MAIL   Вверх
nerdy_weirdie
Дата 6.5.2008, 03:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 16.1.2007

Репутация: нет
Всего: нет



TransmitFile()
PM MAIL   Вверх
JohnnyQ
Дата 10.5.2008, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 22.7.2007
Где: Санкт_Петербург

Репутация: нет
Всего: нет



Цитата(sergu @ 5.5.2008,  17:51)
Короче, открываешь файл в бинарном режиме. Читаешь его кусочками, например по 1024 байт в буфер, и отправляешь его. Потом получаешь этот кусочек файла, и дозаписываешь его в конец целевого файла.

Попробывал так сделать - работает, но опять только для текстовых файлов...
 
открываю файл вот так   Fp=fopen(c,"rb")
 дальше считываю в цикле с помощью fgets(buffer, 1000, Fp ), ну и потом в том же цикле отправляю кусками файл.
Может с fgets что-то ни так в бинарном режиме?
PM MAIL   Вверх
W4FhLF
Дата 10.5.2008, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 1
Всего: 121



А справку по fgets читали? Она для чего? В вашем случае надо использоваться fread. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
nerdy_weirdie
Дата 12.5.2008, 04:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 16.1.2007

Репутация: нет
Всего: нет



Цитата(W4FhLF @ 10.5.2008,  14:25)
А справку по fgets читали? Она для чего? В вашем случае надо использоваться fread.

Бох ты мой, какой fread... если уж на то пошло - лучше спроецировать файл на память и отправить целиком. Если под win, то так:
Код

CreateFile();
CreateFileMapping();
MapViewOfFile();
send();


Это сообщение отредактировал(а) nerdy_weirdie - 12.5.2008, 04:45
PM MAIL   Вверх
W4FhLF
Дата 12.5.2008, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 1
Всего: 121



И чем же лучше?

Добавлено через 2 минуты и 42 секунды
И чем лучше?


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
nerdy_weirdie
Дата 12.5.2008, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 16.1.2007

Репутация: нет
Всего: нет



Цитата(W4FhLF @ 12.5.2008,  08:50)
И чем же лучше?

Добавлено @ 08:52
И чем лучше?

 smile  smile 
1) Вы хоть представляете себе, как работают эти fread, fwrite?
2) Значительно удобнее.

Это сообщение отредактировал(а) nerdy_weirdie - 12.5.2008, 22:36
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0966 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.