SMB-сервер с JLAN на Android: не видит общую папку с ПК или MAC

Я пытаюсь запустить сервер на устройстве Android, используя библиотеку JLAN. После некоторых работ он как бы бежит, останавливается. С другого устройства Android я могу подключиться и увидеть свою общую папку, добавив вручную сервер с smb://192.168.0.10:1445.

Вот мои проблемы:

1) Я внедрил Android-устройство, но не могу использовать порт выше 1024. (Поэтому я использую 1445 вместо 445)

2) С любого другого устройства я не вижу автоматически свой сервер. Кажется, мой netbios или моя конфигурация вещания неверны.

3) Я попытался подключить его с MAC-адреса как «аноним» с smb://192.168.0.10:1445. Появляются окна аутентификации, но когда я подтверждаю, MAC говорит, что у меня нет прав или что нет общей папки.

Код моих файлов:

Мой файл конфигурации Xml:

<?xml version="1.0" standalone="no"?>
   <jlanserver>
      <servers>
         <SMB/>
         <noFTP/>
         <noNFS/>
      </servers>
      <SMB>
         <host name="serveur" domain="Workgroup">
            <broadcast>255.255.0.0</broadcast>
            <smbdialects>Core,LanMan,NT</smbdialects>

            <netBIOSSMB sessionPort="1139" namePort="1137" datagramPort="1138" platforms="linux,solaris,macosx,windows"/>
            <tcpipSMB platforms = "linux,macosx,windows,solaris" port = "1445"/>

            <comment>SMB Android Server</comment>
         </host>

         <authenticator type="local">
            <class>org.alfresco.jlan.server.auth.LocalAuthenticator</class>
            <mode>USER</mode>
            <Debug/>
            <allowGuest/>
         </authenticator>

         <!-- Debug -->
            <sessionDebug flags="Netbios,State,Negotiate,Tree,Transact,Echo"/>
            <netbiosDebug/>
            <announceDebug/>
      </SMB>

      <shares>
         <diskshare name="ESPACE" comment="Dossier de Partage">
            <driver>
              <class>org.alfresco.jlan.smb.server.disk.JavaFileDiskDriver</class>
              <LocalPath>/tmp</LocalPath>
            </driver>

            <size totalSize="2T" freeSize="100G"/>-->
            <accessControl default="Write"/>
         </diskshare>
      </shares>

      <security>
         <authenticator type="local">
            <class>org.alfresco.jlan.server.auth.LocalAuthenticator</class>
            <mode>USER</mode>
            <Debug/>
            <allowGuest/>
         </authenticator>
      </security>

      <shareMapper>
         <class>org.alfresco.jlan.smb.server.DefaultShareMapper</class>
         <debug/>
      </shareMapper>

My Main Class: (Launchserver and StopServer are called clicking buttons in my activity)

package archisoft.com.smbserverandroid;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

import org.alfresco.jlan.app.XMLServerConfiguration;
import org.alfresco.jlan.smb.server.CIFSConfigSection;
import org.alfresco.jlan.smb.server.SMBServer;

import java.io.InputStream;
import java.io.InputStreamReader;


public class Configuration extends ActionBarActivity {

    public static final String TAG = "ServiceServerSMB";
    private Button stopButton = null;
    private Button startButton = null;
    private XMLServerConfiguration srvConfig;

    SMBServer MonServer;

    // A la création
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        Log.d(TAG, "####### onCreate");
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_configuration);
    }

    // Au redémarrage
    @Override
    public void onStart()
    {
        Log.d(TAG, "####### onStart");
        super.onStart();
        // On bind les boutons
        startButton = (Button) findViewById(R.id.buttonStart);
        stopButton = (Button) findViewById(R.id.buttonStop);
    }

    // Au retour sur l'activité
    @Override
    public void onResume()
    {
        Log.d(TAG, "####### onResume");
        super.onResume();
    }

    // A l'arrêt
    @Override
    public void onStop()
    {
        Log.d(TAG, "####### onStop");
        super.onStop();
    }

    @Override
    public void onPause()
    {
        Log.d(TAG, "####### onPause");
        super.onPause();
    }

    // Destruction
    @Override
    public void onDestroy() {
        Log.d(TAG, "####### Destruction");
        super.onDestroy();

    }

    // Appelé lorsque l'on clique sur "Start Server"
    public void LaunchServer(View view)
    {
        Log.d(TAG, "####### Launch server");

                try {
                    InputStream stream = getResources().openRawResource(R.raw.jlanconfiguration);
                    srvConfig = new XMLServerConfiguration();
                    srvConfig.loadConfiguration(new InputStreamReader(stream));

                    ((CIFSConfigSection) srvConfig.getConfigSection(CIFSConfigSection.SectionName)).setDatagramPort(1138);
                    ((CIFSConfigSection) srvConfig.getConfigSection(CIFSConfigSection.SectionName)).setNameServerPort(1137);
                    ((CIFSConfigSection) srvConfig.getConfigSection(CIFSConfigSection.SectionName)).setSessionPort(1139);

                    CIFSConfigSection cifsConfig = (CIFSConfigSection) srvConfig.getConfigSection(CIFSConfigSection.SectionName);

                    MonServer = new SMBServer(srvConfig);
                    MonServer.startServer();

                    Log.d(TAG, "Lancement serveur");
                } catch (Exception e) {
                    Log.e(TAG, "Erreur lancement serveur", e);
                }
    }

    public void StopServer(View view)
    {
        Log.d(TAG, "####### StopServer");

        MonServer.shutdownServer(true);
    }
}

Спасибо всем, кто попытается мне помочь. Любой совет приветствуется.

Если у вас есть какие-либо вопросы, не стесняйтесь спрашивать.

С наилучшими пожеланиями!

Энтони


person Anthony Bléchet    schedule 20.07.2015    source источник
comment
ты решил эту проблему?   -  person user25    schedule 19.11.2020


Ответы (1)


Вы можете увидеть общую папку на ПК с мобильного устройства Android с помощью jcifs, что здорово, попробуйте это link передайте свое имя пользователя и пароль, и вы сможете получить все общие папки всего за один шаг smbFile.listfiles( ). попробуй у меня сработало.

person Appoids    schedule 19.10.2015
comment
Я попробую. Спасибо вам за ссылку. - person Anthony Bléchet; 21.10.2015
comment
Привет, вопрос был о том, как создать сервер, а не о том, как создать клиент. - person Filimindji; 04.12.2015