高级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 ...
随机推荐
- innerText和innerHTML的区别
innerhtml用法 innertext用法 以及innerHTML与innertext的区别,看完这个大家以后在实际应用中,就可以选择合适的方法.尽可能的考虑到兼容性. test.innerHTM ...
- .NET使用NPOI组件将数据导出Excel
.NPOI官方网站:http://npoi.codeplex.com/ 可以到此网站上去下载最新的NPOI组件版本 2.NPOI在线学习教程(中文版): http://www.cnblogs.com/ ...
- C#中析构函数,命名空间及字符串的运用(Ninth day)
又到了总结知识的时间了,今天在云和学院学习了析构函数,命名空间及字符串的处理,现在就为大家总结下来. 理论: 析构函数 不能在结构中定义析构函数.只能对类使用析构函数. 一个类只能有一个析构函数. 无 ...
- JavaSE学习总结第21天_IO流3
21.01 转换流出现的原因及格式 由于字节流操作中文不是特别方便,所以,java就提供了转换流. 字符流 = 字节流 + 编码表 21.02 编码表概述和常见编码表 编码表:计算机只能识别二 ...
- Nginx 之四: Nginx服务器的rewrite、全局变量、重定向和防盗链相关功能
一:Nginx 后端服务器组的配置: 1.upstream: 用于设置后端服务器组的主要指令,upstream类似于之前的server块或http块,用法如下: upstreame Myserver{ ...
- python中的异常如何处理
一.异常基础 在编程程序出现bug时一般不会将错误信息显示给用户,而是现实一个提示的页面. try: #正常逻辑代码 input = raw_input("输入数字:") data ...
- jQuery中的$extend()介绍
jQuery.extend 函数详解 JQuery的extend扩展方法: Jquery的扩展方法extend是我们在写插件的过程中常用的方法,该方法有一些重载原型,在此,我们一起去了解了解 ...
- oracle序列详解
tyle="margin:20px 0px 0px; font-size:14px; line-height:26px; font-family:Arial"> 序列: 是o ...
- MFC技术内幕系列之(四)---MFC消息映射与消息传递内幕
//////////////////////////////////////////////////////////////////////////////////// ...
- prim模板
]; int n; ][]; ]; int prim(){ int i,j,mi,v; ;i<n;i++){ d[i]=map[][i]; vis[i]=; } ;i<=n;i++){ m ...