高级UIKit-08(TCPSocket)
【day1001_MoviePlayer】:视频播放
需要导入MediaPlayer.framework
- (void)viewDidLoad
{
[super viewDidLoad];
NSURL *url = [NSURL fileURLWithPath:@"/Users/tarena/yz/李明杰/OC视频/ARC/28-ARC04-循环引用.mp4"];
self.moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];
self.moviePlayer.view.frame = CGRectMake(, , , );
// [self.moviePlayer setControlStyle:MPMovieControlStyleNone]; // 隐藏视频操作
[self.moviePlayer play];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playFinishedAction) name:MPMoviePlayerPlaybackDidFinishNotification object:Nil];
[self.view addSubview:self.moviePlayer.view];
}
-(void)playFinishedAction{
NSLog(@"播放完成");
}
- (IBAction)clicked:(UIButton *)sender {
// [self.moviePlayer pause];// 暂停
// 准备播放 把数据加载到内容
// [self.moviePlayer prepareToPlay];
UIImage *image = [self.moviePlayer thumbnailImageAtTime:self.moviePlayer.currentPlaybackTime timeOption:MPMovieTimeOptionExact];
self.imageView.image = image;
}
【day1002_netWork】:tcpSocket
要导入一个类AsyncSocket,在ARC模式下需要将该类的.m文件上附加-fno-objc-arc(不使用arc模式)
- (void)viewDidLoad
{
[super viewDidLoad];
self.fileData = [NSMutableData data];
// 创建服务端对象
self.socketServer = [[AsyncSocket alloc] initWithDelegate:self];
// 设置端口号
[self.socketServer acceptOnPort: error:Nil];
}
// 接收新的服务端 接收到客户端发送的socket 相当于是客户端和服务端之间的通道
-(void)onSocket:(AsyncSocket *)sock didAcceptNewSocket:(AsyncSocket *)newSocket{
NSLog(@"接收到客户端发送的连接");
self.socketNew = newSocket;
}
// 连接到客户端
-(void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port{
NSLog(@"连接到客户端:%@",host);
[self.socketNew readDataWithTimeout:- tag:]; // 读取数据
}
// 接收到客户端数据 注意:当文件大时,此方法只会调用一次读取一次数据,不会自动调用
-(void)onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag{
self.fileSize += data.length;
[self.fileData appendData:data];
NSLog(@"接收到数据长度:%d,%d",data.length,self.fileSize);
if (self.fileData.length == ) {
[self.fileData writeToFile:@"/Users/tarena/yz/第三阶段(高级UI)/day10/a.mp3" atomically:YES];
}
[self.socketNew readDataWithTimeout:- tag:];
}
// 断开连接
-(void)onSocketDidDisconnect:(AsyncSocket *)sock{
}
// 客户端
- (IBAction)buttonAction:(UIButton *)sender {
// 创建客户端
self.socketClient = [[AsyncSocket alloc] initWithDelegate:self];
// 发送连接
// 连接服务端
[self.socketClient connectToHost:@"localhost" onPort: error:Nil];
NSLog(@"发送连接");
// 发送数据
NSData *data = [NSData dataWithContentsOfFile:@"/Users/tarena/yz/第三阶段(高级UI)/day10/musics/泡沫.mp3"];
[self.socketClient writeData:data withTimeout:- tag:];
}
-(void)onSocket:(AsyncSocket *)sock didWriteDataWithTag:(long)tag{
NSLog(@"发送完成");
}
属性不能以new开头
高级UIKit-08(TCPSocket)的更多相关文章
- Linux高级编程--08.线程概述
线程 有的时候,我们需要在一个基础中同时运行多个控制流程.例如:一个图形界面的下载软件,在处理下载任务的同时,还必须响应界面的对任务的停止,删除等控制操作.这个时候就需要用到线程来实现并发操作. 和信 ...
- KVM虚拟机高级设置——08 管理远程虚拟机
在搭建KVM环境——07 带GUI的Linux上安装KVM图形界面管理工具介绍了KVM图形化管理工具,这款工具除了可以管理本地KVM虚拟外,还可以管理远程KVM虚拟机. 输入113机器密码 输入yes ...
- Java入门 - 高级教程 - 08.Applet
原文地址:http://www.work100.net/training/java-applet.html 更多教程:光束云 - 免费课程 Applet 序号 文内章节 视频 1 概述 2 Apple ...
- 即时聊天 / XMPP
MQTT是第二个即时聊天协议(了解) 5.即时通讯 即时通讯网上有第三方的解决方案,比如环信,融云等.我们是自己搭的xmpp服务器,服务器使用的tigase,之前写过相关的博客,自己去年也做了对应的w ...
- Swift - 给表格添加编辑功能(删除,插入)
1,下面的样例是给表格UITableView添加编辑功能: (1)给表格添加长按功能,长按后表格进入编辑状态 (2)在编辑状态下,第一个分组处于删除状态,第二个分组处于插入状态 (3)点击删除图标,删 ...
- Swift - 给表格的单元格UITableViewCell添加图片,详细文本标签
表格UITableView中,每一单元格都是一个UITableViewCell.其支持简单的自定义,比如在单元格的内部,添加图片和详细文本标签. 注意UITableViewCell的style: (1 ...
- Swift - 使用表格组件(UITableView)实现分组列表
1,样例说明: (1)列表以分组的形式展示 (2)同时还自定义分区的头部和尾部 (3)点击列表项会弹出消息框显示该项信息. 2,效果图: 3,代码如下: 1 2 3 4 5 6 7 8 9 ...
- TensorFlow2教程(目录)
第一篇 基本操作 01 Tensor数据类型 02 创建Tensor 03 Tensor索引和切片 04 维度变换 05 Broadcasting 06 数学运算 07 前向传播(张量)- 实战 第二 ...
- 高级UIKit-09(TCPSocket发送文件、上传和下载)
[day1101_SocketSendFile]:发送文件到服务端 发送文件需要在该文件上拼接消息头,比如类型,文件名,文件大小 // 服务端 - (void)viewDidLoad { [super ...
随机推荐
- 用 jQuery Masonry 插件创建瀑布流式的页面
瀑布流式的页面,最早我是在国外的一个叫 Pinterest 的网站上看到,这个网站爆发,后来国内的很多网站也使用了这种瀑布流方式来展示页面(我不太喜欢瀑布流这个名字). 我们可以使用 jQuery 的 ...
- HYSBZ1588 营业额统计【Splay】
转载请注明出处,谢谢:http://www.cnblogs.com/KirisameMarisa/p/4366582.html ---by 墨染之樱花 [题目链接]http://www.lydsy ...
- windows上的tomcat配置
下载及安装 首先要安装JDK:jdk-7windows-x64.zip 再安装tomcat:apache-tomcat-7.0.23-windows-x64.zip 配置环境变量: CATALIN ...
- Joel在耶鲁大学的演讲
Joel Spolsky是一个美国的软件工程师,他的网络日志"Joel谈软件"(Joel on Software)非常有名,读者人数可以排进全世界前100名. 上个月28号,他回到 ...
- C函数调用与栈--代码真相
前面详细的说了,C函数调用的过程中,栈的变化情况的原理部分,这里在看一下汇编代码的真正的实现. 有关前面的那一片博客,主要记住的就是函数调用时栈的变化,4+3+2的步骤: (1)设置栈帧边界 (2)开 ...
- Java基础之编程语法(一)
1.基本格式 所有Java代码都应该在一个class中. Java是严格区分大小写的. Java是一种自由格式的语言.Java代码分为结构定义语句和功能执行语句,功能执行语句最后必须以分号结束. 2. ...
- Css小技巧-图片垂直居中
说明:样式设置主要是针对图片的父级元素,并非图片元素本身. Css代码[图片父级点的样式]: <style> .box { /*非IE的主流浏览器识别的垂直居中的方法*/ display: ...
- vs 2010 网站项目和asp.net 应用程序引用webservice
项目需要做对接,对方提供的是一个webservice接口,自己建了个网站项目,然后添加web 引用,一切正常. 当实际编码的时候,发现一些类.方法找不到. 百思不得其解,只得对照对方提供的demo 看 ...
- Python学习之collections module-defaultdict()
defaultdict()继承自dict系统内置类型defaultdict()定义以及作用: 返回一个和dictionay类似对象,和dict不同: 1. 可以制定key对应value ...
- python Unable to find vcvarsall.bat 错误
今天遇到了这个方面的问题,目前找到两种办法.一种是换编译器如mingw,另一种是装vc.第一种方法没成功,现在正在等第二种. 第一种: 首先安装MinGW: 把MinGW的路径添加到环境变量path中 ...