iOS开发中我们和服务器打交道用到最多的就是数据请求,如果你使用过OC进行开发,相信AFNetworking这个库你并不陌生,今天我们来聊聊swift中的网络请求具体该怎样操作
首先给大家介绍下Alamofire,Alamofire是出自AFNetworking开发人员之手的一个基于swift语言的网络操作库,功能类似于AFNetworking,下面我们看下该怎么样使用Alamofire进行网络请求.
继续阅读 »
iOS开发中和服务器打交道除了数据请求外,还有文件的上传及下载,OC中文件上传及下载,笔者就不多说了,今天来看下Swift中该如何进行文件的下载及上传,同样笔者做下简单封装,方便在其他地方调用.
继续阅读 »
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 层的
继续阅读 »
最近准备从头学习下*nix下的网络编程,参考资料为 unix网络编程 和 The Linux Programming Interface.
IPv4套接字地址结构以sockaddr_in命名,定义在头文件中.
我的系统环境为Arch x86_64 GNU/LINUX,该结构体的定义如下
继续阅读 »
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: 三个位数组, 非别对应监听不同类型读写及错误事件的描述符。
继续阅读 »
同步IO
Linux IO的两阶段
同步, 异步, 阻塞, 非阻塞, 是网络IO中经常被提到的概念, 刚接触Tornado服务器的时候也知道Tornado是异步非阻塞的高性能web服务器, 直到最近看了一些资料才对同步异步的概念有了一些自己的想法。
HTTP协议是构建在TCP协议上的, TCP通信的底层本质上是socket的IO, 在Linux上, 以读socket为例, 数据首先到达的是内核缓冲区, 其次才会从内核缓冲区拷贝到用户进程, 所以负责通信的进程去读写socket的时候(也即recvfrom调用), 一般是两个阶段:
等待数据准备好, 此时数据暂存在内核缓冲区
数据准备好, 从内核缓冲区拷贝到用户进程
以上的两阶
继续阅读 »
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
继续阅读 »