日韩性视频-久久久蜜桃-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ò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美日本免费 | 黄色仓库av| 久久亚洲精品中文字幕 | 午夜激情在线视频 | 欧美日本在线看 | 国产精品久久久久久久久久久新郎 | 欧美aaaaaaaaaa| 精品国产一区二区三区久久 | 久久99精品久久久久久 | 啪啪影音 | 日本一区二区三区久久 | 精品久久久久久久久久久aⅴ | mm131丰满少妇人体欣赏图 | 黑人操亚洲美女 | 久久久一二三 | 国产成人免费看一级大黄 | 国产精品综合一区二区 | 精品久久久中文字幕人妻 | 国产日产欧美一区二区三区 | 在线观看免费高清 | 久久精品99国产精 | 亚洲成人自拍 | 久久艹av| 欧美福利视频一区二区 | 欧美中文字幕在线播放 | 午夜黄色av | 中文字幕日本人妻久久久免费 | 久久91亚洲精品中文字幕奶水 | 国产伦精品一区二区三区视频痴汉 | 天堂成人国产精品一区 | 国产精品888| 99精品在线免费观看 | 亚洲琪琪 | 蜜桃在线一区二区三区 | www.av网 | av第一福利大全导航 | x88av视频| 欧美日韩国产精品成人 | 噜噜啪啪 | 亚洲成人免费在线视频 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 美女爽爽爽 | 日韩中文字幕视频 | www四虎影院| 操女人的逼逼 | 粗大黑人巨茎大战欧美成人免费看 | 爱情岛成人 | 天天综合干 | 亚洲自拍第三页 | 一区二区三区偷拍 | 欧美区国产区 | 一二三四区视频 | 伊人黄| 日本一级黄色 | 超碰网站在线观看 | 久久精品人妻一区二区三区 | 日日骚影院 | 一级黄色片免费播放 | 久久高清内射无套 | 国产精品久久一区二区三区 | 亚洲精品久久一区二区三区777 | 男人的天堂久久久 | 人人艹人人 | 五月综合激情网 | 亚洲一级在线播放 | 国产精品一区二区麻豆 | 丝袜制服一区 | 亚洲美女色视频 | 一区二区三区啪啪啪 | 欧美性xxxxx极品少妇 | youjizz视频 | 亚洲欧美综合自拍 | 色婷婷av一区二区三区gif | 欧美日韩人妻精品一区二区三区 | 久久性感美女视频 | 欧美sm凌虐视频网站 | 麻豆视频免费版 | 免费大片在线观看www | 欧美大片大全 | 一级全黄裸体免费视频 | 免费大片在线观看www | 欧美一区二区三区免费在线观看 | 黄色欧美网站 | 免费在线观看黄视频 | 免费jizz| 久久久久久午夜 | www.555国产精品免费 | 蜜色影院 | 欧美性aaa | 成人福利在线 | 五月99久久婷婷国产综合亚洲 | 91麻豆精品国产理伦片在线观看 | 丝袜人妻一区二区三区 | 国产深夜福利在线 | 韩日av片| 天堂资源av | 日韩色影院 | 黄色麻豆视频 | 青青啪啪 |