2015-07-20 8 views
1

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

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

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> 

Мой главный класс: (Launchserver и StopServer называются щелкая кнопками в моей деятельности)

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); 
    } 
} 

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

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

С уважением!

Энтони

ответ

-1

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

+0

Я попробую. Спасибо вам за ссылку. –

+0

Привет, речь шла о «Как создать сервер», а не «Как создать клиента». – Filimindji