2011-11-07 16 views
8

Compruebo el documento iOS y también googleo por un tiempo y tengo la impresión de que iOS no admite samba (aunque hay una aplicación samba para iPhone de jailbreak).Soporte para SMB/samba en iOS?

Pero entonces, ¿cómo consigue la aplicación FileBrowser eso? ¿Significa eso que implementaron el soporte de samba por su cuenta?

También encuentro que hay una biblioteca de código abierto llamada tango que proporciona soporte limitado para samba. ¿Entonces mi pregunta es si el mejor apoyo de samba que puedo obtener?

Respuesta

6

Pasé bastante tiempo implementando mi propio cliente SMB, así que me gustaría compartir algo de experiencia aquí.

Primero no use tango en su código de producción porque una vez que se familiarice con SMB se dará cuenta de que su implementación es problemática, p. no es compatible con Unicode y en algunos casos no está rellenando correctamente, por lo que no puede acceder a la carpeta. Y también escuché que la gente decía que no podían conectar la ventana 7 con eso.

En segundo lugar, para resumir mi experiencia me parece jcifs guys had said the best: "cualquier persona que quiera poner en práctica el CIFS necesita saber una cosa muy importante - la 'documentación CIFS oficial' no es exacta y no refleja la realidad no existe una especificación. . no crea todo lo que lee en el borrador IETF o el documento de SNIA (el mismo formato del documento es diferente). se usa solamente como una sugerencia. la referencia definitiva es lo que se ve en el alambre.

Reglas

Wireshark!

... busque en JCIFS la inspiración en el diseño, como por ejemplo cómo búsqueda y respuesta en un mapa por MID y codifica y descodifica marcos.

A continuación, poner en práctica los siguientes comandos:

  • 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
  • todas las respuestas para arriba "

La única cosa que puedo añadir es que, también hay que poner en práctica TRANS2_FIND_FIRST2 petición/respuesta para consultar los archivos dentro de una carpeta y si desea saber cuántas carpetas compartidas del servidor expone lo que necesita implementar NetShareEnum Solicitud/respuesta.

+0

Sólo por curiosidad, ¿su apoyo a la ejecución NTLMv2? – user523234

+0

No. Olvidé mencionar que la autenticación es otra parte que llevará bastante tiempo implementar. Solo implemento NTLM actualmente. – Qiulang

1

iOS no le da acceso a un sistema de archivos al que pueda estar acostumbrado. Puede leer y escribir archivos dentro del área privada de su propia aplicación, pero eso es todo. Podría implementar otro sistema de archivos en su aplicación, pero no podrá usar operaciones normales de archivos.

Apuesto que FileBrowser implementa el protocolo dentro de su aplicación e implementa un sistema de archivos como una capa encima para el acceso. Supongo que podrías intentar portar una biblioteca de samba existente o hacer tu propia.

7

Utilicé libsmbclient del paquete samba (http://www.samba.org) para operaciones SMB en iOS. Puede consultar mi proyecto https://github.com/kolyvan/kxsmb (contenedor object-c en libsmbclient). Por ahora, es compatible con un conjunto limitado de operaciones SMB. En su mayoría fue diseñado para navegar por la red local y recuperar archivos de acciones SMB.

+1

Buena biblioteca. Experimenté un problema al no poder continuar con el comando 'rake'. Encontré una [solución] (http://www.jattcode.com/installing-autoconf-automake-libtool-on-mac-osx-mountain-lion/) en un [problema] (https://github.com/ kolyvan/kxsmb/issues/14) en tu github. Básicamente, necesitaba instalar autoconf haciendo: (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' Puse esta información aquí en caso de que los enlaces se pudran :) – Keale

1

iOS no tiene ninguna API para trabajar con SMB. Sin embargo, SMB actualmente está documentado por Microsoft y su implementación no es imposible (aunque tampoco es fácil). Creé un proyecto freeware que contiene la mayoría de lo que necesita para manejar SMB. Ver

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

+0

solo implementa el ahora obsoleto samba v1 (por ejemplo, compatible con Windows XP)) – bernstein

+0

@Nick Frolov ¿Cómo puedo obtener la dirección IP con el nombre de la PC? Encuentro muchas cosas pero no tengo éxito. Por favor, ayúdame. Gracias –

Cuestiones relacionadas