Я пытаюсь запустить сервер на устройстве 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);
}
}
Спасибо всем, кто попытается помочь меня. Любые советы приветствуются.
Если у вас есть какие-либо вопросы, не стесняйтесь спрашивать.
С уважением!
Энтони
Я попробую. Спасибо вам за ссылку. –
Привет, речь шла о «Как создать сервер», а не «Как создать клиента». – Filimindji