| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Работа с сетью > net share |
| Автор: Dweep 4.11.2005, 22:57 |
| Как посмотреть список росшареных ресурсов на компе с произвольным айпишником в сети. Я использую следующий код: ShellFolder folder = ShellFolder.getShellFolder(new File("c:/")); while (folder.getParentFile() != null) folder = (sun.awt.shell.ShellFolder)folder.getParentFile(); Потом получая масив файлов, и приводя их к типу ShellFolder получаю сылку на сеть, робочие групы, компьютеры, ресурсы на компьютерах. Проблема в том, что этот способ работает только если мой виндовс(XP) может увидеть эти компьютеры. Обычно (у нас в групе около 200 компов) отображается только несколько машин, но на любой комп без проблем можна зайти набрав \\name_comp или \\IP |
| Автор: pvo 5.11.2005, 12:20 |
| ответил тебе в соседнем треде - посмотри в сторону jcifs.org |
| Автор: Dweep 6.11.2005, 03:04 | ||
Клас: http://jcifs.samba.org. меня приятно удивил, я уже почти был уверен что java не умеет определять список шар по айпишнику. Но все же есть проблема: есть несколько компьютеров (примерно 5%), которые имеют шары, связь с ними сравнительно быстрая, но SmbFile[] st = f.listFiles(); - выдает jcifs.smb.SmbException у SmbFile есть метод setConnectTimeout(по умолчанию 0), Exception выкидывает независимо от его значения. Поэтому у меня возникло 2 вопроса: 1. Можно ли обойти это исключение, т.е. увидеть ресурсы на этих компах 2. Скиньте ссылку на ОpenSourse class похожий по функциональности. |
| Автор: pvo 6.11.2005, 12:07 | ||||
Насчет ошибки: 1. кинь сюда стектрейс и фрагмент кода, в котором он возникает. 2. Отличаются ли чем-нить машины, при обращении к которым возникает ошибка, от остальных? Какая на них ос, например. Нет ли проблем при обращении к этим машинам по windows сети? М.б. на них расшарены ресурсы с русскими именами, а на остальных - нет ... и т.п. 3. У проекта jcifs есть mail list. По крайней мере года полтора назад он был вполне живой и народ там активно помогал с устранением ошибок в jcifs. 4. Еще можно попробовать подключать другие версии этой библиотеки. 5. Возможно, ошибку можно будет обойти при помощи изменения настроек jcifs.
Во-первых это не класс, а пакет (продукт/проект/библиотека...) Во-вторых, из того, что мне встречалось, jcifs был самым работоспособным. В-третьих, увы, что-то сейчас не могу найти ссылок на другие проекты. |
| Автор: pvo 6.11.2005, 12:43 |
| PS. Попробуй посмотреть http://sourceforge.net/search/?type_of_search=soft&exact=1&forum_id=0&group_id=0&atid=0&words=smb+java&Search=Search и http://java-source.net/open-source/network-clients |
| Автор: Dweep 6.11.2005, 13:47 | ||||||||
Мой частично работающий код выглядит так:
При i=18 выдает ошибку. Этот компьютер воткнутый в один со мной свич, то есть перебоев с сетью быть не должно. На нем открыты ресурсы через file i ftp, правда там установлено большое количество разного ПО(Apache 2.0, IIS 6.0, MySQL 4.1, VisNetic FtpServer, MS SQL 2000 и т.д.), еще стоит ограничение скорости на шары 500кбайт/с. Такую же ошибку выдает на еще как минимум одном компьютере.
Выскочило еще 2 проблемки, допустим на компе открыты
Програма Выдает:
То есть итого 4 проблемы: 1. На некоторых компах програма не видит ресурсов вообще 2. проблема с русской кодировеой в шарах (козаки/ -----> Є®§ ЄЁ/) (вложеные папки видит нормально) 3. Некоторые папки не замечает: students photos/ и Ocean_Elsy_Gloria_1/ 4. У меня вверсия jcifs_1.2.6, где можно скачать более продвинутую? |
| Автор: pvo 8.11.2005, 18:16 |
| 1. Русские имена папок начинаю показываться корректно при указании jcifs.encoding=Cp866. 2. Насчет длинных имен share - почитай http://www.google.ru/search?hl=ru&q=+jcifs+long+share+name+problem&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr= и http://search.gmane.org/search.php?group=gmane.network.samba.java&query=long+share+names. Я чуть посмотрел и обнаружил, что это well-known bug Для того, чтобы получать длинные имена share, нужно использовать RPC, который вроде как есть, но не интегрирован с jcifs. Если найдешь решение проблемы, свистни, плз - ибо тоже интересно. 3.С тем, что на некоторых компьютерах совсем не видит ресурсов не столкнулся. Может быть из-за того, что перед выполнением запроса вхожу в домен. 4. Насчет версии - насколько я понял, 1.2.6 - последняя версия, а public cvs or svn нет |
| Автор: Guest 12.11.2005, 02:33 | ||
| С длинными именами я боролся таким способом: smbF[] - масив полученых шар, с фильтром пропускать только директории. ShellFolder - import sun.awt.shell.ShellFolder; file[] - новый масив порлученых шар с длинными а также рускими именами.
Очевидно, что если на компе нет папок с короткими именами то так сделать не получится. Если все папки на руском, то проблема с кодировкой остается. Я не придумал ничего лучшего чем менять "©жгЄҐЈий§екдлў Їа®«¤¦нпзб¬ЁвмЎо‰–“Љ…?ѓ?™‡•љ”›‚Ђ??Ћ‹„†?џ—‘Њ?’њ?ћ" на "йцукенгшщзхъфывапролджэячсмитьбюЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ" Как указать кодировку, куда ее вписывать? |
| Автор: Lеstat 10.1.2006, 14:25 | ||||
| а вот у меня проблемка на компе открыта папка Mus если я пишу
все нормально... получаю папки и файлы в папке mus, но если я пытаюсь получить что в корне лежит
то SnbException jcifs.smb.SmbException: 5 выдает не пойму в чем проблема |