Android SMB 簡單幾步實現(xiàn)手機給電腦傳輸數(shù)據(jù)

SMB是什么

SMB万哪,即"Server Message Block" 服務(wù)器信息塊赃春,是一個網(wǎng)絡(luò)文件共享協(xié)議,它能被用于Web連接和客戶端與服務(wù)器之間的信息溝通籍凝,允許應(yīng)用程序和終端用戶從遠端的文件服務(wù)器訪問文件資源路媚。

SMB通信協(xié)議是微軟(Microsoft)和英特爾(Intel)在1987年制定的協(xié)議黄琼,主要是作為Microsoft網(wǎng)絡(luò)的通訊協(xié)議。SMB 是在會話層(session layer)和表示層(presentation layer)以及小部分應(yīng)用層(application layer)的協(xié)議整慎。

通過它可以簡單的給電腦傳輸文件脏款,不過SMB不太安全:
SMB協(xié)議中采用控制文件安全傳輸?shù)臋C制是使用客戶身份驗證的方式,該方式通過客戶端向服務(wù)器端發(fā)送驗證密碼來獲取文件傳輸?shù)臋?quán)限裤园,不過針對該機制的網(wǎng)絡(luò)攻擊相對嚴重撤师,攻擊程序通過對驗證密碼的截獲來竊取文件的訪問權(quán)限,局域網(wǎng)下文件傳輸?shù)陌踩缘貌坏奖U稀?/code>

使用場景

一般不會采用這種方式來實現(xiàn)具體的功能需求拧揽,有一些特殊的場景會用到剃盾,例如:

  1. 一些手機上的壁紙軟件,有橫屏的壁紙淤袜,但是橫屏的壁紙一般在電腦上使用痒谴,如果用SMB技術(shù)就可以直接將圖片傳到電腦的文件夾內(nèi),不用下載在本地后再通過微信/QQ傳給電腦铡羡,方便很多积蔚。

  2. 再如我們有時候有一個很大的apk包,通過微信傳給電腦會改后綴名蓖墅,QQ可能還有大文件限制库倘,這時候也可以考慮使用SMB來解決临扮,畢竟自己寫的傳輸代碼论矾,逼格直接拉滿??。

  3. 再者想要直接將設(shè)備中操作的數(shù)據(jù)反應(yīng)在電腦上查看杆勇,例如一個平板端的視力檢測工具贪壳,檢測后直接將數(shù)據(jù)反應(yīng)在電腦上供工作人員使用。

如何使用

1.前提條件

  • 手機和電腦連接到同一局域網(wǎng)
  • 電腦需要設(shè)置用戶名和密碼
  • 設(shè)置共享文件夾 (smb://username:password@ip/folder蚜退。(登錄鑒權(quán)))
    • Mac設(shè)置:系統(tǒng)偏好設(shè)置-共享-文件共享-添加共享文件夾
    • Windows設(shè)置:文件夾-共享-高級共享-權(quán)限-打開更改權(quán)限
  • 電腦不能息屏

設(shè)置共享文件夾:

Mac設(shè)置 Windows設(shè)置
Mac設(shè)置
Windows設(shè)置

2.代碼配置

具體源碼見GitHub:BySMB

Demo使用

1).代碼引入

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

dependencies {
    implementation 'com.github.youlookwhat:BySMB:1.1.0'
}

2).開啟聯(lián)網(wǎng)權(quán)限

<uses-permission android:name="android.permission.INTERNET" />

3).在Application初始化

BySMB.initProperty()

4).得到SMB實例

val bySmb = BySMB.with()
        .setConfig(
                et_ip.text.toString(),       // ip
                et_username.text.toString(),// 用戶名
                et_password.text.toString(),// 密碼
                et_foldName.text.toString()// 共享文件夾名
        )
        .setReadTimeOut(60)
        .setSoTimeOut(180)
        .build()

查看ip:

  • Mac上查看ip:ifconfig | grep "inet"
  • Windows上查看ip:ipconfig

3.上傳文件到電腦

fun upload(bySmb: BySMB) {
    // 生成文件 File
    val writeStringToFile = writeStringToFile(
            instance,
            et_content.text.toString(), // 文本內(nèi)容
            et_fileName.text.toString()// 文件名闰靴,例如:隨感筆記.txt
    )
    // 上傳
    bySmb.writeToFile(writeStringToFile, object : OnOperationFileCallback {

        override fun onSuccess() {
            // 成功
        }

        override fun onFailure(message: String) {
            // 失敗
        }

    })
}

注意:如上傳相同文件名的文件彪笼,會覆蓋之前文件的內(nèi)容。

4.查找電腦上的文件列表

fun listFile(bySmb: BySMB){
    // 讀取根目錄下的所有文件蚂且,重載方法("", "*.txt", callback)
    bySmb.listShareFileName(object : OnReadFileListNameCallback {
        override fun onSuccess(fileNameList: List<String>) {
            // 讀取成功 fileNameList文件名列表
        }

        override fun onFailure(message: String) {
             // 失敗
        }
    })
}

5.刪除電腦上的文件

fun deleteFile(bySmb: BySMB){
    bySmb.deleteFile(et_fileName.text.toString(), object : OnOperationFileCallback {
        override fun onSuccess() {
        // 刪除成功
        }

        override fun onFailure(message: String) {
            // 失敗
        }
    })
}

結(jié)語

SMB一般用不到配猫,但是也有部分有需求的用戶,之前做的時候遇到很多摸不著頭腦的地方杏死,而且很多的資料是外文的泵肄,希望此篇文章對部分人有所幫助。附上源碼地址淑翼,GitHub:BySMB腐巢。

相關(guān)資料

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末冯丙,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子遭京,更是在濱河造成了極大的恐慌胃惜,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件洁墙,死亡現(xiàn)場離奇詭異蛹疯,居然都是意外死亡,警方通過查閱死者的電腦和手機热监,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門捺弦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人孝扛,你說我怎么就攤上這事列吼。” “怎么了苦始?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵寞钥,是天一觀的道長。 經(jīng)常有香客問我陌选,道長理郑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任咨油,我火速辦了婚禮您炉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘役电。我一直安慰自己赚爵,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著冀膝,像睡著了一般唁奢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上窝剖,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天麻掸,我揣著相機與錄音,去河邊找鬼赐纱。 笑死论笔,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的千所。 我是一名探鬼主播狂魔,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼淫痰!你這毒婦竟也來了最楷?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤待错,失蹤者是張志新(化名)和其女友劉穎籽孙,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體火俄,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡犯建,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了瓜客。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片适瓦。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖谱仪,靈堂內(nèi)的尸體忽然破棺而出玻熙,到底是詐尸還是另有隱情,我是刑警寧澤疯攒,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布嗦随,位于F島的核電站,受9級特大地震影響敬尺,放射性物質(zhì)發(fā)生泄漏枚尼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一砂吞、第九天 我趴在偏房一處隱蔽的房頂上張望署恍。 院中可真熱鬧,春花似錦呜舒、人聲如沸锭汛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽唤殴。三九已至,卻和暖如春到腥,著一層夾襖步出監(jiān)牢的瞬間朵逝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工乡范, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留配名,地道東北人。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓晋辆,卻偏偏與公主長得像渠脉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子瓶佳,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容