日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

如何使用IOS實現WIFI傳輸

瀏覽:21日期:2022-09-16 18:05:52
問題

業(yè)務場景上存在需要將手機里的文件、圖片傳遞給其他的設備,

不僅僅局限于傳書、資料啥的都有可能傳遞

方案

最base的方法:設備之間加個云,設備上傳資料到云,云同步資料到各個設備,適用于多設備之間,這個沒講的必要

如果是兩設備之間,忽略服務器,怎么搞?聯想到圖書App中的WiFi傳書,貌似沒云端概念的,怎么做到的?

上菜采用框架GCDWebServer,通過CocoaPods引入

pod 'GCDWebServer', '~> 3.0'設置本地接收目錄,初始化Server并啟動

override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated)if let filepath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first as NSString? {let path = filepath.appendingPathComponent('transfer')if !FileManager.default.fileExists(atPath: path) { do {try FileManager.default.createDirectory(atPath: path, withIntermediateDirectories: false, attributes: nil) } catch {print(error) }}webServer = GCDWebUploader(uploadDirectory: path)webServer?.delegate = selfwebServer?.allowHiddenItems = truewebServer?.allowedFileExtensions = ['doc', 'docx', 'xls', 'xlsx', 'txt', 'pdf', 'jpeg', 'jpg']webServer?.title = '善齋工具'webServer?.prologue = '歡飲使用善齋工具的WIFI管理平臺'webServer?.epilogue = '善齋書屋制作'if webServer?.start() == true, let address = IPHelper.deviceIPAdress(), address.count > 0, let port = webServer?.port { ipLb.text = '1.確保設備在同一局域網 n2.上傳時勿關閉該頁面 n3.請網頁中輸入該地址 nhttp://(address):(port)/'} else { ipLb.text = 'GCDWebServer not running!'} }}局域網內獲取本機的ip地址,并設置其他設備訪問鏈接

#import <ifaddrs.h>#import <arpa/inet.h>#import <net/if.h>@implementation IPHelper+ (NSString *)deviceIPAdress { NSString *address = @''; struct ifaddrs *interfaces = NULL; struct ifaddrs *temp_addr = NULL; int success = 0; success = getifaddrs(&interfaces); if (success == 0) { // 0 表示獲取成功temp_addr = interfaces;while (temp_addr != NULL) { if( temp_addr->ifa_addr->sa_family == AF_INET) {// Check if interface is en0 which is the wifi connection on the iPhoneif ([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@'en0']) { // Get NSString from C String address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)];} } temp_addr = temp_addr->ifa_next;} } freeifaddrs(interfaces); return address; }#define IOS_CELLULAR @'pdp_ip0'#define IOS_WIFI@'en0'#define IOS_VPN @'utun0'#define IP_ADDR_IPv4 @'ipv4'#define IP_ADDR_IPv6 @'ipv6'#pragma mark - 獲取設備當前網絡IP地址+ (NSString *)getIPAddress:(BOOL)preferIPv4 { NSArray *searchArray = preferIPv4 ? @[ IOS_VPN @'/' IP_ADDR_IPv4, IOS_VPN @'/' IP_ADDR_IPv6, IOS_WIFI @'/' IP_ADDR_IPv4, IOS_WIFI @'/' IP_ADDR_IPv6, IOS_CELLULAR @'/' IP_ADDR_IPv4, IOS_CELLULAR @'/' IP_ADDR_IPv6 ] : @[ IOS_VPN @'/' IP_ADDR_IPv6, IOS_VPN @'/' IP_ADDR_IPv4, IOS_WIFI @'/' IP_ADDR_IPv6, IOS_WIFI @'/' IP_ADDR_IPv4, IOS_CELLULAR @'/' IP_ADDR_IPv6, IOS_CELLULAR @'/' IP_ADDR_IPv4 ] ;NSDictionary *addresses = [self getIPAddresses]; NSLog(@'addresses: %@', addresses);__block NSString *address; [searchArray enumerateObjectsUsingBlock:^(NSString *key, NSUInteger idx, BOOL *stop) { address = addresses[key]; //篩選出IP地址格式 if([self isValidatIP:address]) *stop = YES; } ]; return address ? address : @'0.0.0.0';}+ (BOOL)isValidatIP:(NSString *)ipAddress { if (ipAddress.length == 0) {return NO; } NSString *urlRegEx = @'^([01]?dd?|2[0-4]d|25[0-5]).' '([01]?dd?|2[0-4]d|25[0-5]).' '([01]?dd?|2[0-4]d|25[0-5]).' '([01]?dd?|2[0-4]d|25[0-5])$';NSError *error; NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:urlRegEx options:0 error:&error];if (regex != nil) {NSTextCheckingResult *firstMatch=[regex firstMatchInString:ipAddress options:0 range:NSMakeRange(0, [ipAddress length])];if (firstMatch) { NSRange resultRange = [firstMatch rangeAtIndex:0]; NSString *result=[ipAddress substringWithRange:resultRange]; //輸出結果 NSLog(@'%@',result); return YES;} } return NO;}+ (NSDictionary *)getIPAddresses{ NSMutableDictionary *addresses = [NSMutableDictionary dictionaryWithCapacity:8];// retrieve the current interfaces - returns 0 on success struct ifaddrs *interfaces; if(!getifaddrs(&interfaces)) {// Loop through linked list of interfacesstruct ifaddrs *interface;for(interface=interfaces; interface; interface=interface->ifa_next) { if(!(interface->ifa_flags & IFF_UP) /* || (interface->ifa_flags & IFF_LOOPBACK) */ ) {continue; // deeply nested code harder to read } const struct sockaddr_in *addr = (const struct sockaddr_in*)interface->ifa_addr; char addrBuf[ MAX(INET_ADDRSTRLEN, INET6_ADDRSTRLEN) ]; if(addr && (addr->sin_family==AF_INET || addr->sin_family==AF_INET6)) {NSString *name = [NSString stringWithUTF8String:interface->ifa_name];NSString *type;if(addr->sin_family == AF_INET) { if(inet_ntop(AF_INET, &addr->sin_addr, addrBuf, INET_ADDRSTRLEN)) {type = IP_ADDR_IPv4; }} else { const struct sockaddr_in6 *addr6 = (const struct sockaddr_in6*)interface->ifa_addr; if(inet_ntop(AF_INET6, &addr6->sin6_addr, addrBuf, INET6_ADDRSTRLEN)) {type = IP_ADDR_IPv6; }}if(type) { NSString *key = [NSString stringWithFormat:@'%@/%@', name, type]; addresses[key] = [NSString stringWithUTF8String:addrBuf];} }}// Free memoryfreeifaddrs(interfaces); } return [addresses count] ? addresses : nil;}在其他設備中訪問該地址即可

let address = IPHelper.deviceIPAdress()let port = webServer?.porthttp://(address):(port)/備注: 確保設備在同一局域網 上傳時勿關閉該頁面Game Over

局域網中,設備作為server,其他設備作為client,簡單的HTTP方式上傳文件到server,初始配置的路徑即為server接收后存放文件的路徑

以上就是如何使用IOS實現WIFI傳輸的詳細內容,更多關于IOS實現WIFI傳輸的資料請關注好吧啦網其它相關文章!

標簽: IOS
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
日韩毛片在线| 日韩国产一区二区三区| 亚洲一区日韩在线| 欧美精品激情| 亚洲精品高潮| 国产精品成人一区二区网站软件| 99精品在线观看| 免费看av不卡| 成人看片网站| 老司机精品久久| 一区二区亚洲视频| 亚洲精品国产日韩| 欧美日韩 国产精品| 91精品丝袜国产高跟在线| 日本中文字幕视频一区| 欧美日韩一区自拍| 精品99在线| 欧美aa在线观看| 制服诱惑一区二区| 日韩激情一区二区| www在线观看黄色| 亚洲国产专区| 日韩精品三级| 天堂√中文最新版在线| 亚洲二区精品| 国产丝袜一区| 久久中文字幕av| 亚洲欧美在线专区| 成人日韩在线| 日日摸夜夜添夜夜添国产精品| 精品欧美日韩精品| 麻豆久久精品| 91亚洲人成网污www| 欧美专区在线| 97se综合| 日韩avvvv在线播放| 风间由美中文字幕在线看视频国产欧美| 婷婷成人在线| 国产精品丝袜在线播放| 亚洲美洲欧洲综合国产一区| 久久av资源| 国产视频亚洲| 韩国久久久久久| 亚洲精品无播放器在线播放| 三级小说欧洲区亚洲区| 日韩国产精品久久久久久亚洲| 人在线成免费视频| 国产九九精品| 日韩制服丝袜av| 欧美aa一级| 国产精品久一| 亚洲成人精选| 高清一区二区三区av| 日本不卡视频在线观看| 国产精品av久久久久久麻豆网| 欧美欧美黄在线二区| 成人av二区| 激情国产在线| 国产精品免费精品自在线观看| 黄色亚洲精品| 久久影院午夜精品| 国产另类在线| 日韩高清在线一区| 亚洲深夜福利在线观看| 尤物精品在线| 亚洲第一精品影视| 成人在线视频免费| 国产精品高潮呻吟久久久久| 婷婷五月色综合香五月| 黄色av一区| 婷婷精品视频| 日韩中文首页| а√天堂8资源在线| 国产精品白丝一区二区三区| 亚州av日韩av| 中文字幕日韩亚洲| 91精品婷婷色在线观看| www.51av欧美视频| 国产精品久久观看| 精品日韩在线| 国产一区国产二区国产三区 | 国内揄拍国内精品久久| 日本欧美一区二区| 亚洲丝袜美腿一区| 亚洲aa在线| 日韩一区二区三区在线看| 欧美精品黄色| 亚洲高清久久| 尤物精品在线| 日韩精品一区第一页| 免费日韩av| 亚洲精品女人| 日韩中文一区二区| 日韩av二区在线播放| 国产三级一区| 国产欧美日韩免费观看| 欧美激情五月| 国产一区二区三区四区二区| 国模精品一区| 色偷偷偷在线视频播放| 久久精品主播| 亚洲一区二区三区高清不卡| 久久国产福利| 亚洲另类黄色| 国产日韩一区二区三区在线播放 | 视频一区中文| 模特精品在线| 日韩中文字幕1| 亚洲影院天堂中文av色| 日韩精品一卡二卡三卡四卡无卡 | 中文字幕视频精品一区二区三区| 亚洲免费毛片| 国产精品大片免费观看| 国产精品成人a在线观看| 麻豆成全视频免费观看在线看| 久久九九国产| 国产精品美女| 日韩精品亚洲专区| 麻豆成人在线观看| 日韩在线高清| 中文精品视频| 亚洲毛片一区| 麻豆一区二区在线| 亚洲手机视频| 日韩精品欧美大片| 精品久久福利| 亚洲欧美日韩国产一区二区| 国产日韩欧美一区二区三区 | 热久久国产精品| 国产精品视频一区二区三区| 中文字幕在线视频网站| 午夜宅男久久久| 国产亚洲一区二区三区啪| 精品入口麻豆88视频| 精品在线99| 国产调教精品| 国产综合色区在线观看| 亚洲一区二区三区无吗| 久久不卡日韩美女| 免费久久精品| 国产欧美一区二区色老头| 999精品在线| 亚洲精品日本| 日本免费一区二区三区四区| 亚洲欧美成人综合| 麻豆一区二区三| 国产精品日本| 麻豆国产一区| 国产亚洲综合精品| 国产精品久久久久久久免费观看| 中文精品视频| 日韩不卡一区| 日韩精品一区二区三区中文| 欧美成人a交片免费看| 三级久久三级久久久| 亚洲风情在线资源| 国产精品一区高清| 免费在线观看精品| 色天使综合视频| 国产精品久久免费视频| 亚洲欧美日本国产专区一区| 国产成人精品亚洲线观看| 亚洲少妇诱惑| 不卡福利视频| 日本精品在线播放| 99国产成+人+综合+亚洲欧美| 久久99免费视频| 亚洲五月综合| 日韩一区二区免费看| 日韩欧美网址| 欧美国产日韩电影| 日韩精品视频网| 亚洲激情二区| 欧美日韩精品在线一区| 精品久久久网| 欧美性感美女一区二区| 免费观看不卡av| 亚洲欧美网站在线观看| 日本在线视频一区二区| 亚洲精品伊人| 美腿丝袜在线亚洲一区| 在线免费观看亚洲| 日日摸夜夜添夜夜添国产精品| 在线一区视频观看| 视频一区二区国产| 伊人久久婷婷| 最近高清中文在线字幕在线观看1| 精品视频自拍| 日本高清久久| 蜜臀91精品一区二区三区| 免费精品国产的网站免费观看| av资源中文在线| 国产探花一区在线观看| 四虎在线精品| 亚洲va久久久噜噜噜久久| 蜜桃视频免费观看一区| 免费观看在线综合| 蜜桃视频一区二区三区在线观看| 欧美一级专区| 亚洲精品护士|