Поддержка SMB / самбы на iOS?

Я проверяю документ iOS, а также некоторое время гуглил, и у меня сложилось впечатление, что iOS не поддерживает самбу (хотя есть приложение samba для джейлбрейка iPhone).

Но как тогда приложение FileBrowser достигает этого? Означает ли это, что они реализовали поддержку самбы самостоятельно?

Я также обнаружил, что существует библиотека с открытым исходным кодом под названием tango, которая обеспечивает ограниченную поддержку самбы. Итак, мой вопрос в том, что лучшая поддержка самбы, которую я могу получить?


person Qiulang    schedule 07.11.2011    source источник


Ответы (4)


Я потратил довольно много времени на реализацию своего собственного SMB-клиента, поэтому хотел бы поделиться здесь некоторым опытом.

Во-первых, не используйте танго в своем производственном коде, потому что как только вы познакомитесь с SMB, вы поймете, что его реализация проблематична, например он не поддерживает Unicode, а в некоторых случаях он неправильно заполняет, поэтому вы не можете получить доступ к папке. И еще я слышал, как люди говорили, что не могут связать с ним окно 7.

Во-вторых, обобщая свой опыт, я считаю, что ребята из jcifs сказали лучшее: «любой, кто хочет внедрить CIFS, должен знать одну очень важную вещь -« официальная »документация CIFS неточна и не отражает реальности. Нет НИКАКОЙ спецификации. Не верьте всему, что вы читаете в черновике IETF или документе SNIA (тот же документ, разное форматирование). Используйте его только как подсказку. Окончательная ссылка - это все, что вы видите на проводе.

Правила WireShark!

... посмотрите на JCIFS, чтобы вдохновиться дизайном, например, как он помещает запрос и ответ на карту с помощью MID, а также кодирует и декодирует кадры.

Затем выполните следующие команды:

  • SMB_COM_NEGOTIATE
    SMB_COM_SESSION_SETUP_ANDX
    SMB_COM_TREE_CONNECT_ANDX
    SMB_COM_NT_CREATE_ANDX
    SMB_COM_READ_ANDX
    SMB_COM_WRITE_ANDX
    SMB_COM_CLOSE
  • все ответы на выше "

Единственное, что я могу добавить, это то, что вам также необходимо реализовать запрос / ответ TRANS2_FIND_FIRST2 для запроса файлов внутри папки, и если вы хотите узнать, сколько общих папок предоставляет сервер, вам необходимо реализовать NetShareEnum Запрос / ответ.

person Qiulang    schedule 16.01.2012
comment
Просто любопытно, поддерживает ли ваша реализация NTLMv2? - person user523234; 30.01.2012
comment
Нет. Забыл упомянуть, что проверка подлинности - это еще одна часть, реализация которой займет некоторое время. В настоящее время я использую только NTLM. - person Qiulang; 30.01.2012

Я использовал libsmbclient из пакета samba (http://www.samba.org) для операций SMB на iOS. Вы можете посмотреть мой проект https://github.com/kolyvan/kxsmb (оболочка objective-c на libsmbclient). На данный момент он поддерживает ограниченный набор операций SMB. В основном он был разработан для просмотра локальной сети и получения файлов из общих ресурсов SMB.

person Kolyvan    schedule 30.03.2013
comment
Хорошая библиотека. У меня возникла проблема с невозможностью продолжить выполнение команды rake. Я нашел решение в проблема в вашем github. В основном мне нужно было установить autoconf, выполнив: (1) curl -OL http://ftpmirror.gnu.org/autoconf/autoconf-2.69.tar.gz (2) tar -xzf autoconf-2.69.tar.gz (3) cd autoconf-2.69 (4) ./configure && make && sudo make install Я поместил эту информацию сюда на случай, если ссылки сгниют :) - person Keale; 26.10.2016

iOS не дает вам доступа к файловой системе, к которой вы, возможно, привыкли. Вы можете читать и записывать файлы в личной области своего собственного приложения, но это все. Вы потенциально можете реализовать другую файловую систему в своем приложении, но вы не сможете использовать обычные файловые операции.

Готов поспорить, FileBrowser реализует протокол внутри своего приложения и реализует файловую систему, например, слой поверх этого для доступа. Я предполагаю, что вы можете попробовать портировать существующую библиотеку самбы или создать свою собственную.

person Norman    schedule 07.11.2011

В iOS нет API для работы с SMB. Однако в настоящее время SMB задокументирован Microsoft, и его реализация возможна (хотя и непросто). Я создал бесплатный проект, который содержит большую часть того, что вам нужно для работы с SMB. Видеть

https://sourceforge.net/projects/smb4ios/

person Nick Frolov    schedule 27.03.2014
comment
реализует только теперь устаревшую samba v1 (например, совместимую с windows xp) - person bernstein; 22.08.2014
comment
@Nick Frolov Как я могу получить IP-адрес с именем компьютера. Я много чего нахожу, но не добиваюсь успеха. Пожалуйста помогите. Спасибо - person Darshan Kunjadiya; 08.09.2016