Discussion Board

Results 1 to 11 of 11
  1. #1
    Registered User Djerom's Avatar
    Join Date
    Apr 2010
    Posts
    37
    Мне нужно вести запись в файл на FTP-сервере. Открыть, записать и сразу разорвать соединение. Подскажите, пожалуйста, как это можно сделать? Желательно, в одном методе (без активного объекта).

  2. #2
    Nokia Developer Expert Trufanov's Avatar
    Join Date
    Mar 2010
    Location
    Moscow
    Posts
    34
    В Symbian SDK нет готового клиента FTP. Пишите свой через сокеты. Либо используйте стороннюю библиотеку. Вот здесь есть пример использования на Симбиан библиотеки ftplib:
    http://www.forum.nokia.com/info/sw.n..._1_en.zip.html
    Но она портирована при помощи библиотек Open C.

    Еще можно поискать в исходниках Symbian какое нибудь API для работы с FTP:
    http://developer.symbian.org/xref/os...ct=%2FSymbian3
    Но не факт что оно есть, не факт что его удасться использовать и не ясно, на каких моделях оно будет работать и нет ли нарушений совместимости.
    Last edited by Trufanov; 2010-05-12 at 15:28.

  3. #3
    Registered User Djerom's Avatar
    Join Date
    Apr 2010
    Posts
    37
    Я скачал пример Series_60_Platform_FTP_Example_v1_0.zip и никак не могу понять: класс CFTPSession содержит чистые виртуальные функции. Никакого импорта из ftpsess.lib я не вижу. Как же он работает в этом примере? Может кто-нибудь объяснит?

  4. #4
    Nokia Developer Expert Trufanov's Avatar
    Join Date
    Mar 2010
    Location
    Moscow
    Posts
    34
    IMPORT_C static CFTPSession* NewL(MFtpSessionNotifier* aNotifier);

  5. #5
    Registered User Djerom's Avatar
    Join Date
    Apr 2010
    Posts
    37
    Никак не могу понять, что я не так делаю. Подключил ftpsess.lib к проекту. Описал функции обратного вызова:

    Code:
    class CBTContainerView : public CAknView, public MListenerObserver, public MFtpSessionNotifier
    {
    	...
    	void Cancel(void);
    	void ConnReset(void);
    	void ConnectionError(TOpComp aTConnectionError);
    	...
    }
    Код:

    Code:
    	TBuf<255> host(_L("***"));
    	TBuf8<30> userName(_L8("***")); 
    	TBuf8<30> password(_L8("***"));
    	RSocketServ sock_serv;
    	User::LeaveIfError(sock_serv.Connect());
    	CleanupClosePushL(sock_serv);
    	RHostResolver resolver;
    	User::LeaveIfError(resolver.Open(sock_serv,KAfInet,KProtocolInetTcp));
    	CleanupClosePushL(resolver);
    	TNameEntry name;
     	User::LeaveIfError(resolver.GetByName(host,name));
    	CleanupStack::PopAndDestroy(&resolver);
    	CleanupStack::PopAndDestroy(&sock_serv);
    	TInetAddr serverAddress(name().iAddr);
    	CFTPSession *iFtpSession;
    	iFtpSession = CFTPSession::NewL(this);
    	iFtpSession->Connect(serverAddress,userName,password, CFTPSession::EActive);
    	TUint32 ver;
    	ver=iFtpSession->GetVersion();
    	// iFtpSession->GetCurrentDirectory();
    	iFtpSession->Cancel();
    serverAddress получаю нормально. Connect(), GetVersion() и Cancel() тоже проходят (на Cancel(), например, я попадаю в notifier Cancel()). Но вызов, например, GetCurrentDirectory() и многих других методов, приводит к ошибке: "No source available for "0x38C9636( ekern.exe )()".

  6. #6
    Nokia Developer Moderator A.A.M.'s Avatar
    Join Date
    Jan 2008
    Location
    Moscow, Russia
    Posts
    3,308
    C CFTPSession я не работал, но вы точно уверены, что вызовы вроде GetCurrentDirectory() и т.п. синхронные, а не асинхронные (что скорее всего)? Кроме того, вы уверены, что подключение Connect() проходит без ошибок? В таких случаях лучше проверять возвращаемое значение.

  7. #7
    Registered User Djerom's Avatar
    Join Date
    Apr 2010
    Posts
    37
    Метод Create() ничего не возвращает. Если произошла ошибка, она передаётся через handler.
    Асинхронный метод GetCurrentDirectory() или нет, его вызов не должен ведь приводить к глобальной ошибке. А судя по ошибке, насколько я понимаю, указатель на метод неверный. Может быть это как-то связано с тем, что ftpsess.lib содержит только описание класса CFTPSession, а его реализация находится в ftpsess.dll (тестирую в эмуляторе).

  8. #8
    Nokia Developer Moderator A.A.M.'s Avatar
    Join Date
    Jan 2008
    Location
    Moscow, Russia
    Posts
    3,308
    В документации SDK начиная с S60 3rd ed. MR отсутствует упоминание о CFTPSession, видимо от его поддержки просто отказались (хотя заголовочные файлы и библиотеки есть), так что работоспособность вообще не гарантируется. А пример тот (Series_60_Platform_FTP_Example_v1_0.zip) предназначен для S60 2nd ed. FP1, FP2 и FP3.

  9. #9
    Nokia Developer Moderator truf's Avatar
    Join Date
    Jun 2007
    Location
    Moscow, Russia
    Posts
    1,355
    ftpsess.lib - это библиотека импорта для ftpsess.dll. В ней не должно быть реализации.

  10. #10
    Registered User Djerom's Avatar
    Join Date
    Apr 2010
    Posts
    37
    Я понимаю, что импорта. Я просто надеюсь, может я что-то не так делаю. Может быть по этим скриншотам можно что-то понять: Рисунок 1, Рисунок 2 .
    Пример с Open C громоздкий, и требует установки C Runtime. CFTPSession - то, что надо. Все-таки, хочу попробовать с ним разобраться.
    С CFtpProtocol - то же самое. Мне кажется, я неправильно создаю экземпляр класса. Подскажите, пожалуйста, какой-нибудь класс, который точно должен работать и который имеет структуру наподобие этих двух классов - с чистыми виртуальными методами и notifier-ом. Я хочу попробовать.
    Last edited by Djerom; 2010-05-14 at 13:52.

  11. #11
    Nokia Developer Moderator A.A.M.'s Avatar
    Join Date
    Jan 2008
    Location
    Moscow, Russia
    Posts
    3,308
    Quote Originally Posted by Djerom View Post
    Может быть по этим скриншотам можно что-то понять: Рисунок 1, Рисунок 2.
    Как видно на втором скриншоте вызов метода Connect() завершается ошибкой
    WSOCK: ... connect failed, err 10049
    'err 10049' это 'Address is not available from the local machine'. И, соответственно, пытаться дальше что-то писать/читать бесполезно - ничего кроме ошибок не получите.

    Quote Originally Posted by Djerom View Post
    Подскажите, пожалуйста, какой-нибудь класс, который точно должен работать и который имеет структуру наподобие этих двух классов
    Такого мне не попадалось.

Similar Threads

  1. Проблема с работой программы на реальном устройстве
    By Roman-K in forum Russian Developer Forum - Форум Российских разработчиков
    Replies: 3
    Last Post: 2010-04-29, 11:29
  2. Тест своего приложения на входной звонок и на входящее СМС.
    By Maxfox111 in forum Russian Developer Forum - Форум Российских разработчиков
    Replies: 8
    Last Post: 2010-02-09, 19:39
  3. Nokia OVI Store - кому жаловаться на недостатки
    By mstream in forum Russian Developer Forum - Форум Российских разработчиков
    Replies: 3
    Last Post: 2009-06-15, 10:25
  4. Запись в файл русских символов
    By Maxfox111 in forum Russian Developer Forum - Форум Российских разработчиков
    Replies: 7
    Last Post: 2009-03-29, 22:43

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Nokia Developer aims to help you create apps and publish them so you can connect with users around the world.

京ICP备05048969号  © Copyright Nokia 2013 All rights reserved