2011-11-07 42 views
8

Sprawdzam dokument iOS, a także google go na chwilę i mam wrażenie, że iOS nie obsługuje samby (chociaż istnieje aplikacja samba dla iPhone'a jailbreak).Obsługa SMB/samba w systemie iOS?

Ale jak zrobić to aplikacja FileBrowser osiąga takiego? Czy to oznacza, że ​​wdrożyli wsparcie samby?

Uważam też jest otwarta biblioteka źródło zwane tango która zapewnia ograniczoną obsługę samby. Mam więc pytanie, czy mogę uzyskać najlepsze wsparcie samby?

Odpowiedz

6

Spędziłem trochę czasu we wdrażaniu własnego klienta SMB, więc chciałbym podzielić się z nami pewnym doświadczeniem.

pierwsze nie używaj tango w kodzie produkcyjnym, ponieważ po zapoznaniu się z SMB zdasz sobie sprawę, że jego realizacja jest problematyczne, np nie obsługuje Unicode, aw niektórych przypadkach nie jest prawidłowo dopełniany, więc nie można uzyskać dostępu do folderu. I słyszałem też, jak ludzie mówili, że nie mogą połączyć się z nim za pomocą okna 7.

drugie, aby podsumować moje doświadczenie uważam jcifs guys had said the best: „kto chce wdrożyć CIFS musi wiedzieć jedną bardzo ważną rzecz -«oficjalny»dokumentacja CIFS nie jest dokładna i nie odzwierciedla rzeczywistości nie ma specyfikacji. . wszystko, co przeczytasz w projekcie IETF lub dokumencie SNIA (sam dokument różni formatowania) nie wierzę. Używaj go tylko jako wskazówka. ostateczne odniesienia jest cokolwiek zobaczyć na drucie.

Rules

Wireshark!

... spójrz na JCIFS, aby uzyskać inspirację do projektu, np. W jaki sposób zadanie i odpowiedź na mapę według MID i koduje i dekoduje ramki.

zaimplementować następujące polecenia:

  • 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
  • wszystkie odpowiedzi na wyżej "

Jedyne co mogę dodać, to to, że trzeba także wdrożyć TRANS2_FIND_FIRST2 żądania/odpowiedzi na zapytania pliki w folderze, a jeśli chcesz się dowiedzieć, ile Shared folders serwer naraża trzeba implementacja NetShareEnum Żądanie/odpowiedź.

+0

Po prostu ciekawa, czy Twoja implementacja obsługuje NTLMv2? – user523234

+0

Nie. Zapomniałem wspomnieć, że uwierzytelnienie to kolejna część, której wdrożenie zajmie trochę czasu. Obecnie implementuję tylko NTLM. – Qiulang

1

System iOS nie zapewnia dostępu do systemu plików, do którego można się przyzwyczaić. Możesz czytać i pisać pliki w prywatnym obszarze swojej aplikacji, ale to wszystko. Można potencjalnie zaimplementować inny system plików w aplikacji, ale nie będzie można korzystać ze zwykłych operacji na plikach.

Założę Filebrowser implementuje protokół wewnątrz ich aplikacji i wdraża system plików jak warstwa na górze, że o dostęp. Sądzę, że możesz spróbować przenieść istniejącą bibliotekę samby lub złożyć własną.

7

Użyłem libsmbclient z pakietu samba (http://www.samba.org) dla operacji SMB na iOS. Możesz obejrzeć mój projekt https://github.com/kolyvan/kxsmb (obiekt-c wrapper na libsmbclient). Na razie obsługuje ograniczony zestaw operacji SMB. Przeważnie został zaprojektowany do przeglądania sieci lokalnej i pobierania plików z udziałów SMB.

+1

Ładna biblioteka. Wystąpił problem z niemożliwością kontynuowania polecenia 'rake'. Znalazłem [rozwiązanie] (http://www.jattcode.com/installing-autoconf-automake-libtool-on-mac-osx-mountain-lion/) w [wydanie] (https://github.com/ kolyvan/kxsmb/issues/14) w twoim githubie. Zasadniczo potrzebowałem zainstalować autoconf, wykonując: (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' Umieszczę tę informację tutaj, na wypadek, gdyby linki zgniły :) – Keale

1

iOS nie ma żadnych interfejsów API do pracy z SMB. Jednak SMB jest obecnie udokumentowane przez Microsoft i wdrożenie go nie jest niemożliwe (choć nie jest łatwe). Stworzyłem darmowy projekt, który zawiera większość tego, czego potrzebujesz do obsługi SMB. Patrz:

+0

implementuje tylko przestarzałą sambę v1 (np. Kompatybilna z Windows XP) – bernstein

+0

@Nick Frolov Jak mogę uzyskać adres IP z nazwą komputera. Znajduję wiele rzeczy, ale nie osiągam żadnego sukcesu. Proszę pomóż mi. Dzięki –