日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Swift - 做一个简单的无线U盘(手机端Http服务器搭建)

發(fā)布時(shí)間:2025/5/22 编程问答 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Swift - 做一个简单的无线U盘(手机端Http服务器搭建) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
由于iOS系統(tǒng)的封閉性,在數(shù)據(jù)傳輸方面十分不方便。不像安卓設(shè)備,直接連接電腦就能當(dāng)U盤(pán)使用。所以一般我們?nèi)绻胕Phone臨時(shí)存取個(gè)東西,要么使用數(shù)據(jù)線連接iTunes,要么手機(jī)電腦都登上QQ,使用QQ來(lái)傳輸。
但這兩種方式都略顯不便,所以市面上出現(xiàn)了無(wú)線U盤(pán)這類的APP。原理很簡(jiǎn)單,就是軟件打開(kāi)后會(huì)啟動(dòng)HTTP服務(wù)器,這時(shí)電腦端使用瀏覽器輸入 手機(jī)的ip,就可以通過(guò)web頁(yè)面的形式訪問(wèn)到這個(gè)軟件的用戶文檔。同時(shí)在這個(gè)web頁(yè)面里,直接可以進(jìn)行文件的上傳,下載,刪除等操作。?
下面演示如何開(kāi)發(fā)一個(gè)無(wú)線U盤(pán),實(shí)現(xiàn)功能如下: 1,程序啟動(dòng)后會(huì)啟動(dòng)Web服務(wù),并監(jiān)聽(tīng)設(shè)置的端口,等待請(qǐng)求 2,電腦瀏覽器輸入手機(jī)ip+端口,在web頁(yè)上會(huì)列出用戶文檔里所有文件 3,點(diǎn)擊文件,即可下載
效果圖如下:

詳細(xì)步驟: 1,這里用到了Swift Taylor(一個(gè)用Swift編寫(xiě)HTTP服務(wù)器的開(kāi)發(fā)包)。先把Taylor整個(gè)包引入到項(xiàng)目。

2,添加個(gè)頭文件bridge.h,并添加到編譯參數(shù)里(Taylor內(nèi)部又使用了一個(gè)叫CocoaAsyncSocket的socket庫(kù),使用Objective-C寫(xiě)的)
1 #import "GCDAsyncSocket.h"

3,頁(yè)面代碼?ViewController.swift
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 import UIKit import AssetsLibrary class ViewController: UIViewController { ????//文件操作類 ????var manager:NSFileManager! ????//保存用戶文檔目錄 ????var docPath:NSURL! ????? ????override func viewDidLoad() { ????????super.viewDidLoad() ????????// Do any additional setup after loading the view, typically from a nib. ????????? ????????//設(shè)置用戶文檔路徑 ????????manager = NSFileManager.defaultManager() ????????let urlsForDocDirectory = manager.URLsForDirectory( ????????????NSSearchPathDirectory.DocumentDirectory, ????????????inDomains:NSSearchPathDomainMask.UserDomainMask) ????????docPath = urlsForDocDirectory[0] as! NSURL ????????? ????????//設(shè)置Web服務(wù)器 ????????let server = Server() ????????dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), { ????????????() -> Void in ????????????? ????????????server.addPostRequestHandler(Middleware.requestLogger(println)) ????????????? ????????????//首頁(yè)請(qǐng)求 ????????????server.get("/") { ????????????????request, response, callback in ????????????????? ????????????????self.createIndexHtml() ????????????????let file = self.docPath.URLByAppendingPathComponent("index.html") ????????????????let data = self.manager.contentsAtPath(file.path!) ????????????????response.body = data ????????????????callback(.Send(request, response)) ????????????} ????????????? ????????????//文件請(qǐng)求 ????????????server.get("/file") { ????????????????request, response, callback in ????????????????? ????????????????println(request.arguments) ????????????????var fileName = request.arguments["fileName"] ????????????????let file = self.docPath.URLByAppendingPathComponent(fileName!) ????????????????let data = self.manager.contentsAtPath(file.path!) ????????????????response.body = data ????????????????callback(.Send(request, response)) ????????????} ????????????? ????????????//啟動(dòng)并監(jiān)聽(tīng)服務(wù)器 ????????????server.startListening(port: 4000, forever: true) { ????????????????result in ????????????????switch result { ????????????????case .Success: ????????????????????println("Up and running") ????????????????case .Error(let e): ????????????????????println("Server start failed \(e)") ????????????????} ????????????} ????????})??????? ????} ????? ????//加載用戶文檔下的文件,并生成index.html首頁(yè) ????func createIndexHtml()->Void{ ????????var content = "<html><meta charset=\"utf-8\"><body>" ????????let contentsOfPath = manager.contentsOfDirectoryAtPath(docPath.path!, error: nil) ????????for child in contentsOfPath!{ ????????????content = content + "<a target='_blank' href='/file?fileName=\(child)'>\(child)</a><br/>" ????????} ????????content = content + "</body></html>" ????????createFile("index.html", fileBaseUrl: docPath, content:content) ????} ????? ????//創(chuàng)建文件 ????func createFile(name:String,fileBaseUrl:NSURL,content:String){ ????????var error:NSErrorPointer = nil ????????let file = fileBaseUrl.URLByAppendingPathComponent(name) ????????println("文件: \(file)") ????????let exist = manager.fileExistsAtPath(file.path!) ????????if !exist { ????????????var error:NSErrorPointer = nil ????????????manager.removeItemAtPath(file.path!, error:error) ????????} ????????? ????????let data = content.dataUsingEncoding(NSUTF8StringEncoding, ????????????allowLossyConversion: true) ????????let createSuccess = manager.createFileAtPath(file.path!,contents:data, ????????????attributes:nil) ????????println("文件創(chuàng)建結(jié)果: \(createSuccess)") ????} ????? ????override func didReceiveMemoryWarning() { ????????super.didReceiveMemoryWarning() ????????// Dispose of any resources that can be recreated. ????} }

調(diào)試說(shuō)明: 1,默認(rèn)使用4000端口,可以在代碼里修改
2,真機(jī)調(diào)試的話,可以先把測(cè)試文件用iTunes傳到這個(gè)APP的用戶文檔里。再啟動(dòng)程序,電腦輸入手機(jī)ip+端口訪問(wèn) 3,模擬器調(diào)試的話,文件可以直接拷到這個(gè)程序的用戶文檔里(路徑在控制臺(tái)中有打印)。電腦輸入localhost+端口訪問(wèn) 4,目前這個(gè)只能說(shuō)是一個(gè)只讀U盤(pán),有興趣的可以自行加上文件上傳和刪除功能。
源碼下載:WirelessStorage.zip

總結(jié)

以上是生活随笔為你收集整理的Swift - 做一个简单的无线U盘(手机端Http服务器搭建)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产精品综合一区二区 | 97免费公开视频 | 国产视频欧美 | 五月婷婷深深爱 | 一区二区成人网 | 丝袜视频在线观看 | 日本美女性爱视频 | 五月六月丁香 | 色婷婷电影网 | 国产大片一区二区三区 | 国产一级片免费在线观看 | 久久久久久久久久久久久久久 | 午夜在线网站 | 制服一区二区 | 午夜va | 亚州激情视频 | 五月婷婷久久久 | 高清视频在线免费观看 | 欧美xxxx吸乳| 99视频在线 | 五月激情六月丁香 | 国产ts人妖调教重口男 | 午夜精品久久久久久久久久久久久蜜桃 | 亚洲综合精品 | av第一区| 中文字幕在线观看91 | 亚洲视频色 | 男生操女生网站 | 久久免费在线观看视频 | 久久图库 | 国产一区免费 | 亚洲射情 | 亚洲AV成人无码网站天堂久久 | 91破处视频| 成人免费看片又大又黄 | 日本一级做a爱片 | 伊人伊人伊人 | 在线一区av| 中文字幕校园春色 | 欧美日韩四区 | 加勒比一区二区三区 | 免费的黄网站 | 日本一区二区久久 | 国产原创剧情av | 天天看天天摸天天操 | 东京av在线 | 久久99精品久久久久久水蜜桃 | 青娱乐在线免费观看 | 亚洲伦理网 | 日本一区二区三区视频在线观看 | 国产三级网| 国产精品毛片一区二区在线看 | 米奇7777狠狠狠狠视频 | 九九久久精品视频 | 午夜小视频在线播放 | 伊人久久综合影院 | 色狗网站 | 国产精品久久久久永久免费看 | 老司机精品在线 | 免费av网站观看 | 日本高清视频一区二区三区 | 自拍偷拍视频网 | 好色先生视频污 | 日本十八禁视频无遮挡 | 美国美女群体交乱 | 日韩欧美视频一区二区三区 | 精品久久综合 | 无码一区二区三区 | 800av凹凸| 少妇高潮一区二区三区喷水 | 欧美黄色a | 正在播放一区二区 | 亚洲激情午夜 | 国产精品久久久久久久免费 | 色天天干 | 催眠调教后宫乱淫校园 | 韩国av一区二区三区 | 天天色天天色 | 精品视频中文字幕 | 噜噜色网| 国产一区色 | 精品视频不卡 | 欧美日韩中文字幕一区 | 嫩草网站在线观看 | 91午夜理伦私人影院 | 日本精品视频一区二区三区 | 男人私人影院 | 久久久久成人片免费观看蜜芽 | 久久高清国产 | 深夜福利一区二区三区 | 国产鲁鲁视频在线观看特色 | 香蕉视频在线网址 | 国产精品二区在线 | 在线观看黄网址 | 欧美人禽杂交狂配 | 久久久久久午夜 | 国产日韩一区二区三免费高清 | 日少妇b | 午夜精产品一区二区在线观看的 |