Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Передача файлов


Страницы:   1 2

Krab12345 ©   (2006-11-28 10:04:00) 

Как передать файлы между 2-мя локальными компьютерами на чистом API?


ancara   (2006-11-30 12:39:00) [1]

А-а-а, вот оно как! :)
Ну конечно правильней было бы написать send, если TCP...


Сергей М.   (2006-11-30 12:19:00) [2]


> Ткните носом


Тыкаю)
В [12] и [20] ты упомянул ф-цию sendto()

Цитата из справки:
sendto is normally used on a connectionlesssocket

normally = обычно

Вот я и сделал предположение, что тобой неявно подразумевался именно UDP, каковой как раз и используется connectionless-гнездом)


ancara   (2006-11-30 11:55:00) [3]


> Это не не ему надо, это ты ему предлагаешь в [20] использовать
> UDP)
>

Перечитал три раза свой 20-й пост. Про UDP нинашол :(
Ткните носом :)


Сергей М.   (2006-11-29 12:25:00) [4]


> ancara ©   (29.11.06 12:10) [24]
>
> Krab12345, так тебе по UDP надо передавать?


Это не не ему надо, это тыему предлагаешь в [20] использовать UDP)


ancara   (2006-11-29 12:10:00) [5]

Krab12345, так тебе по UDP надо передавать?

> Сделал клиентскую часть, коннект с сервером устанавливает.

 Я думал что TCP имеется ввиду...


Сергей М.   (2006-11-29 08:47:00) [6]


> не помню "типовой" размер буфера сокета


А его и не надо запоминать - GetSockOpt(SO_RCVBUF/SO_SNDBUF) всегда под рукой и всегда подскажет текущий размер буферов приема/передачи.


> я не понимаю чем руководствуются винсок, когда устанавливает
> этот размер


В первую очередь - кратностью размера буфера размеру страницы вирт.памяти.
По умолчанию - 8к (две страницы по 4к)


> есть ф-ция TransmitFile


Эта ф-ция не работает с UDP-гнездами.


ancara   (2006-11-28 16:02:00) [7]


> "Так не бывает - тут помню, тут не помню" (С)

:)
 Серьезно, я мало того что не помню "типовой" размер буфера сокета, я не понимаю чем руководствуются винсок, когда устанавливает этот размер...
 Но это вобщем-то и не важно, как правильно заметил Dmitrij_K, есть ф-ция TransmitFile, в которую можно просто передать хендл файла и размер "порций", которыми отправлять и "не париться", как говорится! :)


Сергей М.   (2006-11-28 15:49:00) [8]


> насчет размеров уже плохо помню


"Так не бывает - тут помню, тут не помню" (С)

)


ancara   (2006-11-28 15:41:00) [9]

для CopyFile нужно расшарить этот файл сначала, он уже говорил, что надо самому сокетами рулить, разве нет?
да все он понятно излагает, суть задачи в целом ясна, остаются детали..
 Ты вот скажи просто поток в несколько байт ты уже можешь пересылать между сервером и клиентом? Если да, то что тебя интересует: как передать файл целиком?
 Читаешь этот файл в некий буфер, затем указатель на этот буфер передаешь вторым параметром в sendto и все, данные полетели...
 Правда если файл  большой будут трудности с максимальным размером того буфера, который можно в сокет запихнуть, ну тогда дробить его придется как-то... Я честно говоря насчет размеров уже плохо помню, может народ подскажет...


Сергей М.   (2006-11-28 15:14:00) [10]


> Условие курсача, передача через Сокеты


"Курсач" ты непременно "завалишь", если будешь в час по чайной ложке излагать его конкретности)


Сергей М.   (2006-11-28 15:12:00) [11]


> CopyFile разве передает через Сокеты?


Почему бы и нет ?


Dmitrij_K   (2006-11-28 15:12:00) [12]


> Кто подскажет как перекинуть целиком файл, от клиента к
> серверу

TransmitFile


Krab12345   (2006-11-28 15:11:00) [13]

Условие курсача, передача через Сокеты, CopyFile разве передает через Сокеты?


Anatoly Podgoretsky   (2006-11-28 14:44:00) [14]

> Krab12345  (28.11.2006 13:19:13)  [13]

Курсач чисто завязан на АПИ.

CopyFile это чистое АПИ


Reindeer Moss Eater   (2006-11-28 13:23:00) [15]

windows.CopyFile


Krab12345   (2006-11-28 13:19:00) [16]

Курсач чисто завязан на АПИ.
Люди помогите со следующем:
Сделал я серверную часть, она сокет слушает.
Сделал клиентскую часть, коннект с сервером устанавливает.

Кто подскажет как перекинуть целиком файл, от клиента к серверу. Желательно с примерчиком.


ancara   (2006-11-28 11:47:00) [17]

А на чем акцент курсача стоит, на передаче данных по сети или именно на винапи?
 Если на винапи и сокетах, тогда действительно придется велосипед писать... Попробуй хотя бы пару байт между сокетами переслать, потом уж и файлы будешь толкать.
 Там все просто на самом деле:
 инициализируем винсок WSAStartup;
 создаем сокет sock := socket(... ... ...);
 биндим сокет на порт bind(sock, ...)
 ну и все, sendto отправляет recvfrom принимает


Сергей М.   (2006-11-28 11:25:00) [18]


> это курсач, поэтому надо писать


В задании на "курсач" прямо так и указано, что серверная сторона должна быть написана "с нуля" и использовать существующие серверы нельзя ?


Krab12345   (2006-11-28 11:14:00) [19]

народ - это курсач, поэтому надо писать


palva   (2006-11-28 11:00:00) [20]

1. На компьютере источнике запустить WebServer - Бывают очень маленькие типа http://www.ritlabs.com/en/products/tinyweb/ - 53 Кб
2. На компьютере приемнике обратиться к функции URLDownloadToFile из URLMon.tpu


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо