- 博客(17)
- 资源 (10)
- 收藏
- 关注
原创 网络编程Socket之TCP之select概述
I/O模型:1. 阻塞式I/O模型2. 非阻塞式I/O模型:使用fcntl将套接字设置成非阻塞;然后轮询读取数据,这样会耗费大量CPU时间;3. I/O复用模型:阻塞在select上;4. 信号驱动式I/O模型:5. 异步I/O模型:aio_read,信号直到数据已复制到应用进程缓冲区才产生select:select的最后一个时间参数:1.
2014-07-23 11:35:33 2303
原创 网络编程Socket之RST详解
产生RST的三个条件:1. 目的地为某端口的SYN到达,然而该端口上没有正在监听的服务器;2. TCP想取消一个已有的连接;3. TCP接收到一个根本不存在的连接上的分节; 现在模拟上面的三种情况:client:struct sockaddr_in serverAdd; bzero(&serverAdd, sizeof(serverAdd));
2014-07-22 15:12:06 11376 3
原创 网络编程Socket之TCP之close/shutdown详解
close:当套接字的引用计数为0的时候才会引发TCP的四分组连接终止序列; shutdown:不用管套接字的引用计数就激发TCP的正常连接终止序列;这里由一个SO_LINGER套接字选项struct linger { int l_onoff; /* 0 = off, nozero = on */ int l_linger;
2014-07-20 20:36:20 9492 3
原创 网络编程Socket之TCP之read/write
从写一个TCP套接字的write调用成功返回仅仅表示我们可以重新使用原来的应用进程缓冲区,并不代表对端TCP或应用进程已接收到数据。对端TCP必须确认收到的数据,伴随来自对端的ACK的不断到达,本端TCP至此才能从套接字发送缓冲区中丢弃已确认的数据,TCP必须为已发送的数据保留一个副本,直到它被对端确认为止。UDP不保存应用进程数据的副本因此无需一个真正的发送缓冲区,wri
2014-07-20 17:56:34 13795
原创 TCP/IP详解之IP分片
先介绍几个术语:MSS:最大段尺寸1. 是应用层(TCP)与传输层之间的接口属性2. 用于向对端TCP通告对端在每个TCP分节中能发送的最大TCP数据量。3. 它经常设置成MTU减去IP和TCP首部的固定长度。4. 它是一个16位的字段,限定最大值是65535,5. 65535这个MSS值被视为表示“无限”的一个特殊值。MTU:即
2014-07-19 21:51:53 1642
原创 网络编程Socket之TCP之connect详解
对TCP套接字调用connect会激发三次握手,如下:客户端是主动打开连接的一端,会发送第一个SYN分节,然后等待确认,此时连接状态为SYN_SENT,当收到服务端的确认后连接建立,状态变为ESTABLISHED;服务器是被动打开连接的一端,调用listen导致套接字从CLOSED状态变为LISTEN状态,当收到来自客户端的SYN分节以后状态变为SYN_RCVD,然
2014-07-19 20:51:09 32341
原创 网络编程Socket之TCP之TIME_WAIT状态详解
下面我们用最简单的一对一的客户服务器模型来重现编程中遇到的一些问题:初学socket的时候在编写socket程序的时候会遇到很多莫名其妙的问题,比如说bind函数返回的常见错误是EADDRINUSE使用下面的程序重现这个状态:client:int main(int argc, const char * argv[]){ struct sockaddr_in
2014-07-19 17:53:41 2450
原创 基于IOS的FTP详解(五)删除文件或者目录
ftp可以通过以下方法实现删除文件的功能:SInt32 status = 0; NSURL* url = [NSURL URLWithString:directoryStr]; BOOL success = CFURLDestroyResource((__bridge CFURLRef)url, &status); if(success) { self.finishedBlock
2014-07-13 14:42:47 1975 6
原创 基于IOS的FTP详解(四)上传
Uploading a FileUploading a file is similar to downloading a file. As with downloading a file, you need a read stream and a write stream. However, when uploading a file, the read stream will be fo
2014-07-13 14:25:25 3386 5
原创 基于IOS的FTP详解(二)创建目录
这里讲述ftp创建目录Creating a Remote DirectoryTo create a directory on a remote server, set up a write stream as if you were going to be uploading a file. However, provide a directory path, not a
2014-07-11 17:42:23 2451
原创 Xcode调试技巧(一) lldb命令
1. help 2. help 3. help 4. 以下我只列举常用的一些,更加详细的信息可以通过以上方法自行查看。 一些常用的基本命令:5. po和p(print)和expr(expression)或可以修改变量的值;例如:p a=86. list或者l列出源代码,每次列出10行,直接输入list会从当前断点列出,后面加参数会从参数位置列出,
2014-07-06 14:33:34 2047
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人