2011-11-07 38 views
8

Tôi kiểm tra tài liệu iOS và cũng google nó trong một thời gian và nhận được ấn tượng rằng iOS không hỗ trợ samba (mặc dù có một ứng dụng samba cho iPhone jailbreak).Hỗ trợ SMB/samba trên iOS?

Nhưng sau đó, cách ứng dụng FileBrowser đạt được điều đó? Điều đó có nghĩa là họ đã thực hiện hỗ trợ samba bởi chính họ?

Tôi cũng thấy có thư viện mã nguồn mở được gọi là tango cung cấp hỗ trợ giới hạn cho samba. Vì vậy, câu hỏi của tôi là hỗ trợ samba tốt nhất tôi có thể nhận được?

Trả lời

6

Tôi đã dành khá nhiều thời gian để triển khai ứng dụng khách SMB của riêng mình vì vậy tôi muốn chia sẻ một số kinh nghiệm tại đây.

Trước tiên, không sử dụng tango trong mã sản xuất của bạn bởi vì khi bạn đã quen với SMB, bạn sẽ nhận ra rằng việc triển khai nó là vấn đề, ví dụ: nó không hỗ trợ unicode và trong một số trường hợp nó không phải là padding một cách chính xác, do đó bạn không thể truy cập vào thư mục. Và tôi cũng nghe mọi người nói rằng họ không thể kết nối cửa sổ 7 với nó. Thứ hai, để tóm tắt kinh nghiệm của tôi, tôi tìm thấy jcifs guys had said the best: "bất kỳ ai muốn thực hiện CIFS cần biết một điều rất quan trọng - tài liệu" CIFS "chính thức không chính xác và không phản ánh thực tế. . Đừng tin bất cứ điều gì bạn đọc trong dự thảo IETF hoặc tài liệu SNIA (cùng tài liệu định dạng khác nhau). Sử dụng nó chỉ như là một gợi ý. các tài liệu tham khảo dứt khoát là bất cứ điều gì bạn nhìn thấy trên dây.

Rules

Wireshark!

... xem JCIFS để biết cảm hứng thiết kế như cách đặt lại nhiệm vụ và phản hồi vào bản đồ của MID và mã hóa và giải mã khung.

Sau đó thực hiện các lệnh sau:

  • 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
  • tất cả các câu trả lời cho trên "

Điều duy nhất tôi có thể thêm là, bạn cũng cần phải thực hiện TRANS2_FIND_FIRST2 request/response để truy vấn các tập tin trong một thư mục và nếu bạn muốn tìm hiểu có bao nhiêu thư mục chia sẻ máy chủ cho thấy bạn cần triển khai NetShareEnum Yêu cầu/phản hồi.

+0

Chỉ tò mò, hỗ trợ triển khai của bạn có NTLMv2 không? – user523234

+0

No. Quên đề cập đến việc xác thực là một phần khác sẽ mất khá nhiều thời gian để thực hiện. Tôi chỉ thực hiện NTLM hiện tại. – Qiulang

1

iOS không cấp cho bạn quyền truy cập vào hệ thống tệp mà bạn có thể sử dụng. Bạn có thể đọc và ghi các tệp bên trong khu vực riêng của ứng dụng của riêng bạn, nhưng đó là tất cả. Bạn có khả năng triển khai một hệ thống tệp khác trong ứng dụng của mình, nhưng bạn sẽ không thể sử dụng các thao tác tệp thông thường.

Tôi muốn đặt cược FileBrowser thực hiện giao thức bên trong ứng dụng của họ và triển khai hệ thống tệp như lớp trên đầu trang để truy cập. Tôi đoán bạn có thể cố gắng chuyển một thư viện samba hiện có hoặc cuộn thư viện của riêng bạn.

7

Tôi đã sử dụng libsmbclient từ gói samba (http://www.samba.org) cho các hoạt động SMB trên iOS. Bạn có thể xem dự án của tôi https://github.com/kolyvan/kxsmb (wrapper mục tiêu-c trên libsmbclient). Hiện tại, nó hỗ trợ một tập hạn chế các hoạt động SMB. Nó chủ yếu được thiết kế để duyệt mạng nội bộ và truy xuất các tập tin từ các cổ phiếu SMB.

+1

Thư viện đẹp. Tôi đã gặp phải sự cố khi không thể tiếp tục lệnh 'rake'. Tôi tìm thấy một [giải pháp] (http://www.jattcode.com/installing-autoconf-automake-libtool-on-mac-osx-mountain-lion/) trong một [vấn đề] (https://github.com/ kolyvan/kxsmb/issue/14) trong github của bạn. Về cơ bản, tôi cần cài đặt autoconf bằng cách thực hiện: (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' Tôi đặt thông tin này ở đây trong trường hợp liên kết thối :) – Keale

1

iOS không có bất kỳ API nào để hoạt động với SMB. Tuy nhiên, SMB hiện đang được Microsoft tài liệu và thực hiện nó không phải là không thể (mặc dù không dễ dàng quá). Tôi đã tạo một dự án phần mềm miễn phí có chứa hầu hết những gì bạn cần để xử lý SMB. Xem

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

+0

hiện chỉ thực hiện samba v1 lỗi thời (ví dụ: windows xp compatible) – bernstein

+0

@Nick Frolov Tôi làm cách nào để có địa chỉ IP với tên PC. Tôi tìm thấy rất nhiều thứ nhưng không thành công. Làm ơn giúp tôi. Cảm ơn –