Я потратил довольно много времени на реализацию своего собственного 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