网络编程

当前位置:永利402游戏网站-永利402com官方网站 > 网络编程 > CocoaAsyncSocket网络通信之web/iOS通信

CocoaAsyncSocket网络通信之web/iOS通信

来源:http://www.xtcsyb.com 作者:永利402游戏网站-永利402com官方网站 时间:2019-09-17 16:09
NSString *address = @"an error occurred when obtaining ip 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 iPhone if ([[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);NSLog(@"手机的IP是:%@", address);return address;}

永利402游戏网站 1

.m文件+ (NSString *)deviceIPAdress{

连带代码可到github下载:下载地址

永利402游戏网站,.h文件宣称方法/** 获取IP*/+ (NSString *)deviceIPAdress;

点击播放,就能够播放相应的mp5文件。

建议利用工厂方法,一步解决。

永利402游戏网站 2

//1.获得路线

NSURL *url = [[NSURL alloc]initFileURLWithPath:self.PlayerUrl];

// 2.创建AVPlayerItem

AVPlayerItem *item = [AVPlayerItem playerItemWithURL:url];

// 3.创建AVPlayer

_player = [AVPlayer playerWithPlayerItem:item];

// 4.添加AVPlayerLayer

AVPlayerLayer *layer = [AVPlayerLayer playerLayerWithPlayer:self.player];

layer.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height);

[self.view.layer addSublayer:layer];

[_player play];

图1

端口号大家能够依据httpServer类的 listeningPort获取到。

永利402游戏网站 3

赢得手提式有线电话机本地IP地址大家是自定义了三个SYYIpHelper类,完成以下措施,就足以的到IP地址

图2

MultipartMessageHeaderField* disposition = [header.fields objectForKey:@"Content-Disposition"];

NSString* filename = [[disposition.params objectForKey:@"filename"] lastPathComponent];

+ (NSString *)deviceIPAdress {

NSString *address = @"an error occurred when obtaining ip 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 iPhone

if ([[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)];

}}}}

freeifaddrs(interfaces);

return address;

}

接下来咱们就足以调用播放器播放文件了。

图4

这么我们就能够张开Computer相应的链接,唤醒项目中的upload.html文件选拔.VCD文件

那边进入正题了:今后大家要贯彻三个成效,将Computer里的mp3文件传输到手提式有线电话机上中并打开始播放报。

功用不是太复杂,大家这里就采纳GCDAsyncSocket和WebSocket进行web通讯实现文件传输效率。

端连接及数码传输大家是透过MyHTTPConnection类来兑现的。

永利402游戏网站 4

在数据上传完毕的代理回调方法- (void) processStartOfPartWithHeader:(MultipartMessageHeader*) header中获取的。

点击submit后,app分界面就能够议及展览示出上传文书的名目及本地路线。

图3

咱俩的指标是大功告成下边贰个功效,app运营后呈现手提式有线电话机的IP地址和端口号。

AsyncSocket是包装了CFSocket和CFSteam的TCP/IP socket网络库。它提供了异步操作,本地cocoa类的依赖delegate的欧洲经济共同体辅助。主要有以下特征:队列的非阻塞的读和写,并且可选超时。你能够调用它读取和写入,它会当成功后告知您。

电动的socket接收。借使您调用它接受再三再四,它将为每一种连接运行新的实例,当然,也得以即时关闭这一个连接。

寄托(delegate)援助。错误、连接、接收、完整的读取、完整的写入、进度以及断开连接,都得以透过委托形式调用。

基于run loop的,而不是线程的。就算能够在主线程恐怕办事线程中使用它,但您没有要求如此做。它异步的调用委托方法,使用NSRunLoop。委托方法包蕴socket的参数,可令你在多个实例中分歧。

自富含在一个类中。你不需求操作流也许socket,那几个类帮你做了全副。

扶助基于IPV4和IPV6的TCP流

AsyncUdpSocket是UDP/IP socket互连网库,包装自CFSocket。它的做事很像TCP版本,只可是是用以拍卖UDP的。它总结基于非阻塞队列的出殡接收操作,完整的信托扶助,基于runloop,自饱含的类,以及支持IPV4和IPV6。

得到文件名和本土路线,通过通知方式传出那四个值,在app分界面刷新,即图3效果与利益。

本文由永利402游戏网站-永利402com官方网站发布于网络编程,转载请注明出处:CocoaAsyncSocket网络通信之web/iOS通信

关键词: