网络总结2

原创 2015年11月18日 10:48:14

一、大文件下载

1.方案:利用NSURLConnection和它的代理方法

1> 发送一个请求

// 1.URL

NSURL *url = [NSURL URLWithString:@"http://localhost:8080/MJServer/resources/videos.zip"];

// 2.请求

NSURLRequest *request = [NSURLRequest requestWithURL:url];

// 3.下载(创建完conn对象后,会自动发起一个异步请求)

[NSURLConnection connectionWithRequest:request delegate:self];


2> 在代理方法中处理服务器返回的数据

/**

 在接收到服务器的响应时:

 1.创建一个空的文件

 2.用一个句柄对象关联这个空的文件,目的是:方便后面用句柄对象往文件后面写数据

 */

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response

{

    // 文件路径

    NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];

    NSString *filepath = [caches stringByAppendingPathComponent:@"videos.zip"];

    

    // 创建一个空的文件 沙盒中

    NSFileManager *mgr = [NSFileManager defaultManager];

    [mgr createFileAtPath:filepath contents:nil attributes:nil];

    

    // 创建一个用来写数据的文件句柄

    self.writeHandle = [NSFileHandle fileHandleForWritingAtPath:filepath];

}


/**

 在接收到服务器返回的文件数据时,利用句柄对象往文件的最后面追加数据

 */

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data

{

    // 移动到文件的最后面

    [self.writeHandle seekToEndOfFile];

    

    // 将数据写入沙盒

    [self.writeHandle writeData:data];

}


/**

 在所有数据接收完毕时,关闭句柄对象

 */

- (void)connectionDidFinishLoading:(NSURLConnection *)connection

{

    // 关闭文件

    [self.writeHandle closeFile];

    self.writeHandle = nil;

}


2.注意点:千万不能用NSMutableData来拼接服务器返回的数据


二、NSURLConnection发送异步请求的方法

1.block形式 - 除开大文件下载以外的操作,都可以用这种形式

[NSURLConnection sendAsynchronousRequest:<#(NSURLRequest *)#> queue:<#(NSOperationQueue *)#> completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

    

}];


2.代理形式 - 一般用在大文件下载

// 1.URL

NSURL *url = [NSURL URLWithString:@"http://localhost:8080/MJServer/login?username=123&pwd=123"];

// 2.请求

NSURLRequest *request = [NSURLRequest requestWithURL:url];

// 3.下载(创建完conn对象后,会自动发起一个异步请求)

[NSURLConnection connectionWithRequest:request delegate:self];


三、NSURLSession

1.使用步骤

1> 获得NSURLSession对象

2> 利用NSURLSession对象创建对应的任务(Task

3> 开始任务([task resume]


2.获得NSURLSession对象

1> [NSURLSession sharedSession]

2>

NSURLSessionConfiguration *cfg = [NSURLSessionConfiguration defaultSessionConfiguration];

self.session = [NSURLSession sessionWithConfiguration:cfg delegate:self delegateQueue:[NSOperationQueue mainQueue]];


3.任务类型

1> NSURLSessionDataTask

* 用途:用于非文件下载的GET\POST请求

NSURLSessionDataTask *task = [self.session dataTaskWithRequest:request];

NSURLSessionDataTask *task = [self.session dataTaskWithURL:url];

NSURLSessionDataTask *task = [self.session dataTaskWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {

    

}];


2> NSURLSessionDownloadTask

* 用途:用于文件下载(小文件、大文件)

NSURLSessionDownloadTask *task = [self.session downloadTaskWithRequest:request];

NSURLSessionDownloadTask *task = [self.session downloadTaskWithURL:url];

NSURLSessionDownloadTask *task = [self.session downloadTaskWithURL:url completionHandler:^(NSURL *location, NSURLResponse *response, NSError *error) {

    

}];

网络知识点总结

整理一下计算机网络部分的面试常考点,参考书籍:《计算机网络》第五版 谢希仁的那本,希望对大家有所帮助 OSI,TCP/IP,五层协议的体系结构,以及各层协议 OSI分层 (7层):物理层、数据链路层...
  • u012129558
  • u012129558
  • 2016年05月30日 11:25
  • 1485

网络规划总结

 NAT是什么?干什么?解决什么问题? 是什么:是网络地址转换 干什么:在边界路由器中配置NAT后,可以在内网使用私有IP地址,外网使用公有IP地址,通过NAT技术将内网私有IP地址翻译成合...
  • goodman_lqifei
  • goodman_lqifei
  • 2016年12月22日 22:30
  • 352

网络课设总结(一)

      从4月25日到5月6日,历经十二天,终于把课设的编码部分完成了。我还没有沉湎于完成作品的狂喜中,相反,我在以一种怀疑的、批判的目光审视它。我在以做一个反省,对自己这十天来的工作做一个总结。...
  • duqi_2009
  • duqi_2009
  • 2011年05月06日 21:45
  • 807

IOS开发 - 网络总结(一)

客户端:client 服务器:server 请求:request 响应:response 过程 客户端 -> 发送请求 -> 服务器(连接数据库) 服务器 -> 发送响应 -> 客户端 客户端也称移...
  • LXL_815520
  • LXL_815520
  • 2016年03月23日 15:37
  • 425

Java 网络编程之 (完全总结)

TCP        TCP,传输控制协议(Transmission Control Protocol),是面向连接的通信协议。它提供两台计算机之间的可靠无差错的数据传输。应用程序通过 TCP 进行通...
  • DriverKing
  • DriverKing
  • 2011年06月29日 01:07
  • 3094

Tomcat学习总结(2)——Tomcat使用详解

一、Tomcat服务器端口的配置   Tomcat的所有配置都放在conf文件夹之中,里面的server.xml文件是配置的核心文件。   如果想修改Tomcat服务器的启动端口,则可以在...
  • u012562943
  • u012562943
  • 2016年01月04日 17:30
  • 4597

网络程序设计课程学习心得总结

作者:王孟之    学号:SA16225307 网络程序设计,听起来像搞计算机网络的,如果是这样,我不会选这门课,这门课其实是研究神经网络的,这玩意火啊,2016年被誉为人工智能的元年,三月份Alph...
  • mengzhiwang
  • mengzhiwang
  • 2017年01月01日 16:44
  • 1359

java核心技术第2章总结

本章主要介绍Java程序设计环境,下面一节一节的记录:       2.1 安装java工具箱(JDK):           2.1.1, 下载JDK:               这一节主要介绍了...
  • a62894310
  • a62894310
  • 2016年11月10日 17:09
  • 344

割接工作总结

割接工作总结 1. 总述  目的:完成Telenor割接脚本和割接指导。  时间:8月下旬至12月上旬。  工作量:2.3K代码行。  内容:确认割接需求,确认字段对应关系,设计脚本...
  • tianxia_taiping
  • tianxia_taiping
  • 2013年01月12日 15:52
  • 1259

网络服务器开发总结

一、概述 经过多年网络服务器开发实战,于此总结实践体会。本文涉及到异步连接、异步域名解析、热更新、过载保护与网络模型及协程等,但不会涉及到accept4、epoll等基本知识点。 二、可写事件...
  • soft2967
  • soft2967
  • 2014年09月23日 13:49
  • 4355
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:网络总结2
举报原因:
原因补充:

(最多只允许输入30个字)