GitHub开源Samba项目学习(类似网上邻居的客户端)

功能:扫描、发现局域网内其他设备的共享

系统环境
ubuntu16.04

开源项目地址:
https://github.com/google/samba-documents-provider

Ubuntu 16.04下搭建 Android 开发环境 -JDK, Android Studio 安装
http://blog.csdn.net/meiguanggan/article/details/51443679

提示操作步骤:

1.下载Samba 4.5.1源码,与samba-documents-provider-master并列

2.切换道samba-4.5.1源码目录

cd samba-4.5.1

3.创建git仓库

git init

4.应用补丁

git apply ../samba-documents-provider-master/sambapatch.diff

5.下载NDK r15b

http://blog.csdn.net/gyh198/article/details/75036686

6.切换到samba-4.5.1目录,对configure.sh进行修改(tips :set nu显示行号)
vim configure.sh
先修改本地NDK路径(使用绝对路径)
5 NDK=$ANDROID_SDK/root/Android/android-ndk-r15c
12 TOOLCHAIN=$CWD/root/Android/android-ndk-r15c/toolchain
51 $NDKAndroid/root/Android/android-ndk-r15c/build/tools/make_standalone_toolchain.py
再根据Flags解注释以编译想要的版本
 33 # Flags for x86_64
 34 ABI=x86_64
 35 PLATFORM_ARCH=x86_64

 36 TRIPLE=x86_64-linux-android

tips:如果编译ARMv7,需要加上ARM的
# Flags for 32-bit ARM
ABI=arm-linux-androideabi
PLATFORM_ARCH=arm

TRIPLE=arm-linux-androideabi

# Flags for ARM v7 used with flags for 32-bit ARM to compile for ARMv7
COMPILER_FLAG="-march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16"
LINKER_FLAG="-march=armv7-a -Wl,--fix-cortex-a8"
 

7.运行./configure.sh进行配置

8.运行./compile.sh 编译出libsmbclient.so文件

9.运行./install.sh ../samba-documents-provider-master/app/src/main/jniLibs/x86_64生成.so文件

10.切换到SambaDocumentsProvider目录
cd ../samba-documents-provider-master/
(如果有缓存,先运行rm -r app/src/main/cpp/samba_includes)

运行mv app/src/main/jniLibs/x86_64/includes app/src/main/cpp/samba_includes

11.切换到Samba源码目录
cd ../samba-4.5.1/

运行make distclean

12.从androidstudio中打开samba-documents-provider-master项目
修改build.gradle
ndk {
//            abiFilters 'armeabi-v7a'
//            abiFilters 'arm64-v8a'
//            abiFilters 'x86'
            abiFilters 'x86_64'

        }

13.androidstudio下进行编译,提示JniHelper.cc下ENODEV报错;

需要在AndroidStudio中配置NDK路径,File->ProjectStructure…->在打开的窗口中左侧选中SDKLocation->在右侧Android NDK Location中填入NDK目录所在路径

14.编译生成apk

提示:编译生成的apk在android6.0及以上模拟器或真机设备(armeabi-v7a,arm64-v8a,x86,x86_64)上运行一切正常,但在6.0以下均无法运行,提示UnsatisfiedLinkError,找不到动态库libsamba_client.so

替代方案:当前android5.1上采用的是jcifs源码,以java代码的形式来实现的

官方网站
http://jcifs.samba.org/

 

一. Samba 简介 Samba(SMB是其缩写) 是一个网络服务器,用于Linux和Windows共享文件之用;Samba 即可以用于Windows和Linux之间的共享文件,也一样用于Linux和Linux之间的共享文件;不过对于Linux和Linux之间共享文件有更好的网络文件系统NFS,NFS也是需要架设服务器的; 大家知道在Windows 网络中的每台机器即可以是文件共享的服务器,也可以同是客户机;Samba 也一样能行,比如一台Linux的机器,如果架了Samba Server 后,它能充当共享服务器,同时也能做为客户机来访问其它网络中的Windows共享文件系统,或其它Linux的Sabmba 服务器; 我们在Windows网络中,看到共享文件功能知道,我们直接就可以把共享文件夹当做本地硬盘来使用。在Linux的中,就是通过Samba的向网络中的机器提供共享文件系统,也可以把网络中其它机器的共享挂载在本地机上使用;这在一定意义上说和FTP是不一样的。 二. Samba的几个套件,安装及简单配置 sambasamba-client, samba-common 一句 sudo apt-get install samba samba-client 就能全部装上 启动samba也很简单: sudo /etc/init.d/samba start 设置samba的密码, 可以先添加samba用户, 必须是系统用户。 smbpasswd -a yourname 三. 互访 1)windows访问ubuntu windows访问ubuntu很简单, 先在ubuntu上设置共享目录即可, 鼠标右键点目录,选择sharing options, 够选share this folder,需要的话也可以够选下面的allow write 这时在windows的网络邻居中的网络中查找就能找到共享目录了,通过//host也行 2)ubuntu访问windows 第一种:在ubuntu的网络中直接浏览访问 位置->网络,点击界面中windows网络->workgroup,在workgroup组中就可以看到windows计算机名,双击会弹出输入用户名和密码的对话框,将我们上面设置smb的用户名和密码输入就可以进行访问。 第二种:用ubuntu 系统自带的连接到服务器功能访问 位置->连接到服务器,在服务类型中选择“windows共享”,在服务器中输入windows计算机的ip地址或计算机名,点击连接,这样在系统桌面中就会显示一个连接到windows 计算机的文件卷,里面就是windows计算机的共享目录了。 同样在访问的时候要输入smb的用户名和密码。 第三种:用mount’挂载windows的共享目录到本地磁盘 首先要在ubuntu系统中建立一个挂载点,在这里我们建立的挂在点为 /mnt/wind 同样在保证网络连接正常,且windows中有共享目录的前提下,进行一下操作 以windows的ip为192.168.0.1,共享文件夹为share为例 命令如下: mount -t smbfs –o username=wangyh,password=123456 //192.168.0.1/share /mnt/wind 有是这样在访问的时候会出现中文乱码的问题,这样我们可以按下面命令来执行,可以解决这个问题 mount -o smbfs -o iocharset=uft8,codepage=cp936,clmask=777,fmask=777,userneme=wangyh,password=123456 //192.168.0.1/share /mnt/wind 注解:usename和password都为smb的用户和密码,如果要详细了解mount命令,使用man mount在终端查看详细用法 第四种:使用smbclient 命令 一般来讲先列出所有共享目录,命令如下: smbclient –L //192.168.0.1/ -U yourname 输入smb的密码后,将看到共享目录列表。 假设进入共享目录share,命令如下: smbclient //192.168.0.1/share -U yourname 之后将看到一个smb:> 已经进入了smb模式,有些像ftp,敲help可以查看相关命令,get,put可以下载和上传文件。 五. 小结 以上几步,对于简单使用ubuntu和windows的文件共享于互访已经足够,更详细的资料可以参考:http://linux.vbird.org/linux_server/0370samba.php#server_pkg
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值