SMB / Samba-Unterstützung auf iOS?

8

Ich überprüfe iOS-Dokument und google es auch für eine Weile und habe den Eindruck, dass iOS Samba nicht unterstützt (obwohl es eine Samba-App für Jailbreak-iPhone gibt).

Aber wie erreicht die App FileBrowser das? Bedeutet das, dass sie die Samba-Unterstützung selbst implementiert haben?

Ich finde auch, dass es eine Open-Source-Bibliothek namens Tango gibt, die Samba nur begrenzt unterstützt. Also meine Frage ist, dass die beste Samba-Unterstützung ich bekommen kann?

    
Qiulang 07.11.2011, 02:57
quelle

4 Antworten

6

Ich habe einige Zeit damit verbracht, meinen eigenen SMB-Client zu implementieren, daher möchte ich hier einige Erfahrungen teilen.

Verwenden Sie in Ihrem Produktionscode zunächst keinen Tango, denn sobald Sie sich mit SMB vertraut gemacht haben, werden Sie feststellen, dass seine Implementierung problematisch ist, z. Es unterstützt Unicode nicht und in einigen Fällen ist es nicht richtig auffüllen, so dass Sie nicht auf den Ordner zugreifen können. Und ich hörte auch, dass die Leute sagten, sie könnten Fenster 7 nicht damit verbinden.

Zweitens, um meine Erfahrung zusammenzufassen, finde ich jcifs Leute hatten das beste gesagt : "irgendjemand Wer die CIFS implementieren will, muss eine sehr wichtige Sache wissen - die "offizielle" CIFS-Dokumentation ist nicht korrekt und spiegelt nicht die Realität wider. Es gibt KEINE Spezifikation. Glauben Sie nichts, was Sie im IETF-Entwurf oder im SNIA-Dokument gelesen haben (das gleiche Dokument hat unterschiedliche Formatierungen). Verwenden Sie es nur als Hinweis. Die definitive Referenz ist, was auch immer Sie auf dem Draht sehen.

WireShark-Regeln!

... sehen Sie sich JCIFS für Design-Inspirationen an, z. B. wie die Anfrage und die Antwort von MID in eine Karte geschrieben werden und Frames codiert und decodiert werden.

Implementiere dann die folgenden Befehle:

  • 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
  • alle Antworten für oben "

Das Einzige, was ich hinzufügen kann, ist, dass Sie TRANS2_FIND_FIRST2 Anfrage / Antwort implementieren müssen, um die Dateien in einem Ordner abzufragen und herauszufinden, wie viele freigegebene Ordner der Server Ihnen zur Verfügung stellt müssen NetShareEnum Request / Response implementieren.

    
Qiulang 16.01.2012, 03:46
quelle
7

Ich habe libsmbclient aus dem Samba-Paket ( Ссылка ) für SMB-Operationen auf iOS verwendet. Sie können auf mein Projekt Ссылка (objective-c Wrapper auf libsmbclient) schauen. Derzeit unterstützt es eine begrenzte Anzahl von SMB-Operationen. Es wurde hauptsächlich für das Durchsuchen lokaler Netzwerk und das Abrufen von Dateien aus SMB-Freigaben entwickelt.

    
Kolyvan 30.03.2013 04:44
quelle
1

iOS gibt Ihnen keinen Zugriff auf ein Dateisystem, an das Sie gewöhnt sind. Sie können Dateien im privaten Bereich Ihrer eigenen App lesen und schreiben, aber das ist alles. Sie könnten möglicherweise ein anderes Dateisystem in Ihrer Anwendung implementieren, aber Sie können keine normalen Dateioperationen verwenden.

Ich würde wetten, FileBrowser implementiert das Protokoll innerhalb ihrer App und implementiert ein Dateisystem wie eine Schicht darüber für den Zugriff. Ich vermute, du könntest entweder versuchen, eine existierende Samba-Bibliothek zu portieren oder deine eigene zu rollen.

    
Norman 07.11.2011 03:15
quelle
1

iOS hat keine APIs, um mit SMB zu arbeiten. Allerdings ist SMB derzeit von Microsoft dokumentiert und die Implementierung ist nicht unmöglich (wenn auch nicht einfach). Ich habe ein Freeware-Projekt erstellt, das die meisten Dinge enthält, die Sie für die Arbeit mit SMB benötigen. Siehe

Ссылка

    
Nick Frolov 27.03.2014 10:57
quelle

Tags und Links