2016-08-21 朱晓辉
iOS开发中我们和服务器打交道用到最多的就是数据请求,如果你使用过OC进行开发,相信AFNetworking这个库你并不陌生,今天我们来聊聊swift中的网络请求具体该怎样操作 首先给大家介绍下Alamofire,Alamofire是出自AFNetworking开发人员之手的一个基于swift语言的网络操作库,功能类似于AFNetworking,下面我们看下该怎么样使用Alamofire进行网络请求. 继续阅读 »
2016-08-23 朱晓辉
iOS开发中和服务器打交道除了数据请求外,还有文件的上传及下载,OC中文件上传及下载,笔者就不多说了,今天来看下Swift中该如何进行文件的下载及上传,同样笔者做下简单封装,方便在其他地方调用. 继续阅读 »
2016-01-30 ALEX LIN
iOS网络编程层次结构 iOS网络编程层次结构分为三层,从上往下依次为: Cocoa层:NSURL,Bonjour,Game Kit,WebKit Core Foundation层:基于 C 的 CFNetwork 和 CFNetServices OS层:基于 C 的 BSD Socket Cocoa层:是最上层的基于 Objective-C 的 API,比如 URL访问,NSStream,Bonjour,GameKit等,这是大多数情况下我们常用的 API。Cocoa 层是基于 Core Foundation 实现的。 Core Foundation层:因为直接使用 socket 需要更多的编程工作,所以苹果对 OS 层的 继续阅读 »
2015-08-27 Li Shuai
同步IO Linux IO的两阶段 同步, 异步, 阻塞, 非阻塞, 是网络IO中经常被提到的概念, 刚接触Tornado服务器的时候也知道Tornado是异步非阻塞的高性能web服务器, 直到最近看了一些资料才对同步异步的概念有了一些自己的想法。 HTTP协议是构建在TCP协议上的, TCP通信的底层本质上是socket的IO, 在Linux上, 以读socket为例, 数据首先到达的是内核缓冲区, 其次才会从内核缓冲区拷贝到用户进程, 所以负责通信的进程去读写socket的时候(也即recvfrom调用), 一般是两个阶段: 等待数据准备好, 此时数据暂存在内核缓冲区 数据准备好, 从内核缓冲区拷贝到用户进程 以上的两阶 继续阅读 »
2015-11-15 Li Shuai
Linux里的IO多路复用是有效提高IO效率的技术。主要有select、poll、epoll三种。 select select调用的函数接口是: int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); 参数说明: nfds: fdset中最大描述符值加1, fdset是一个位数组, 大小为__FD_SETSIZE(1024), 位数组的每一位表示该描述符是否被检查 readfds, writefds, exceptfds: 三个位数组, 非别对应监听不同类型读写及错误事件的描述符。 继续阅读 »
2015-05-18 Mithrilwoodrat
最近准备从头学习下*nix下的网络编程,参考资料为 unix网络编程 和 The Linux Programming Interface. IPv4套接字地址结构以sockaddr_in命名,定义在头文件中. 我的系统环境为Arch x86_64 GNU/LINUX,该结构体的定义如下 继续阅读 »
2015-07-18 Mithrilwoodrat
csapp 上网络编程一章里有一个 tiny.c ,实现了 HTTP 的 GET 方法,支持 cgi 。照着书上自己敲了一个,取名 toyws 。后续准备把其他几个 HTTP METHOD 实现一下。 代码地址 [toyws][1] 根据 [RFC-2616][2] HTTP messages 分为 request 和 response HTTP-message = Request | Response ; HTTP/1.1 messages 继续阅读 »