while (LastError<WSABASEERR) // While no errors
begin LastError:=recv(IOSock,ABuf,ABufSize,0);
if (LastError>0) then
begin
пишем ABufSize байт из ABuf в файл
end else
LastError=WSAGetLastError(); end
отправка файлов по FTP на WinSock
Вот я отправляю например запрос FTP - серверу на получение списка содержания директории. Он посылает ответ, но как клиенту его принять?
А если вместо этого запроса будет запрос на скачку файла?
Вообще-то командой recv :)
Да понятно что функцией recv. Но меня интересует КАК принять файл? Ведь файл это не обычная строка вроде. Может у кого есть хоть какие нить огрызки кода?
Цитата:
int recv (
SOCKET s,
char FAR* buf,
int len,
int flags
);
Открой файл и пиши в него содержимое buf сколько влезет. Какие проблеммы-то?
Но ведь вроде нужно режимы устанавливать(например TYPE A). Описание recv я знаю уже наизусть, спасибо. А нет пусть даже обобщённого куска кода? И в каком формате приходят текстовые данные?
неужели ни у кого ничего нету?
Что-то типа:
Код:
Не помогает?
Цитата:
250 Opening ASCII mode data connection for test.txt (6 Bytes).
d_квадратики_”й_квадратики_‘Фw›2@
d_квадратики_”й_квадратики_‘Фw›2@
Цитата:
250 Opening ASCII mode data connection for test.txt (6 Bytes).
d_квадратики_”й_квадратики_‘Фw›2@
d_квадратики_”й_квадратики_‘Фw›2@
А при попытке отправить файл в каталоге юзера появляется только файл, но его размер 0 байт.
Что-то типа:
Код:
while (LastError<WSABASEERR) // While no errors
begin LastError:=recv(IOSock,ABuf,ABufSize,0);
if (LastError>0) then
begin
пишем ABufSize байт из ABuf в файл
end else
LastError=WSAGetLastError(); end
begin LastError:=recv(IOSock,ABuf,ABufSize,0);
if (LastError>0) then
begin
пишем ABufSize байт из ABuf в файл
end else
LastError=WSAGetLastError(); end
Не помогает?[/QUOTE]
Этот код не работает, сто раз пробывал и так и сяк, ничего не получается
А при попытке отправить файл в каталоге юзера появляется только файл, но его размер 0 байт.[/QUOTE]
Когда FTP сервер получает запрос на список файлов или на скачивание, он открывает дополнительный порт, по которому эти данные и надо получать, например, создав в новом потоке ещё одно соединение.
Параметры необходимого соединения сервер посылает в ответе на запрос.
Попробуй включить опцию debug при соединении с сервером командой ftp, там всё можно посмотреть. И см. спецификацию протокола, например, здесь: http://www.ietf.org/rfc/rfc0959.txt