随笔分类 -  SOCKET

摘要:TCP报文段首部 序号: TCP是面向字节流的。在一个TCP连接中传送的字节流中的每一个字节都按顺序编号。整个要传送的字节流的起始序号必须在连接建立时设置。首部中的序号字段值则指的是本报文段所发送的数据的第一个字节的序号。 例如,一报文段的序号字段值是301,而携带的数据共有100字节。这就表明:本 阅读全文
posted @ 2017-10-15 18:53 Sawyer Ford 阅读(374) 评论(0) 推荐(0)
摘要:网络协议栈 数据封装过程 TCP和UDP的区别 1. TCP是面向连接的,UDP不是面向连接的。 2. TCP是可靠的,UDP是不可靠的。 3. TCP是面向字节流的,UDP是面向报文的 UDP对应用层交下来的报文,既不合并,也不拆分,有多长发多长,即一次发送一个报文。TCP把应用程序交下来的数据看 阅读全文
posted @ 2017-10-15 15:09 Sawyer Ford 阅读(141) 评论(0) 推荐(0)
摘要:Linux下谈论I/O复用、高并发,一定会说到epoll。因为epoll是最有效的I/O复用方式。 epoll的使用非常简单,总共3个API: Linux2.6.8之后,size参数已被忽略,为了向前兼容,size大于0即可。 op有3种取值:EPOLL_CTL_ADD、EPOLL_CTL_MOD、 阅读全文
posted @ 2017-02-21 20:54 Sawyer Ford 阅读(400) 评论(0) 推荐(0)
摘要:在socket编程之并发回射服务器3篇文章中,提到了3种设计范式: 多进程 父进程阻塞于accept调用,然后为每个连接创建一个子进程。 多线程 主线程阻塞于accept调用,然后为每个连接创建一个子线程。 I/O复用 主进程阻塞于select调用,select负责监听listenfd和connfd 阅读全文
posted @ 2017-02-20 20:19 Sawyer Ford 阅读(301) 评论(0) 推荐(0)
摘要:在socket编程之并发回射服务器一文中,服务器采用多进程的方式实现并发,本文采用多线程的方式实现并发。 多线程相关API: pthread_join类似waitpid,用于等待一个线程的结束。 pthread_detach将线程状态变成detachable。 一个detachable线程终止后,它 阅读全文
posted @ 2017-02-19 13:44 Sawyer Ford 阅读(189) 评论(0) 推荐(0)
摘要:守护进程(daemon)是在后台运行且不与任何控制终端关联的进程。 与终端脱离有两个目的: 创建守护进程前首先需要理解几个概念:进程组、会话、控制终端。 每个进程除了有一进程ID(PID)之外,还属于一个进程组。 进程组是一个或多个进程的集合,每个进程组有一个进程组ID。 每个进程组有一个组长进程( 阅读全文
posted @ 2017-02-18 15:11 Sawyer Ford 阅读(920) 评论(0) 推荐(0)
摘要:承接上文:socket编程之并发回射服务器 为了让服务器进程的终止一经发生,客户端就能检测到,客户端需要能够同时处理两个描述符:套接字和用户输入。 可以使用select达到这一目的: 函数声明如下: 之前的服务器程序通过多进程的方式来处理并发连接,我们也可以使用select对其进行改造: #incl 阅读全文
posted @ 2017-02-15 20:07 Sawyer Ford 阅读(369) 评论(0) 推荐(0)
摘要:对于一次I/O操作(以read为例),数据首先被拷贝到内核的某个缓冲区,然后再从内核缓冲区拷贝到应用进程缓冲区。 因此,一次I/O操作通常包含两个阶段: (1) 等待数据准备好 (2) 从内核向进程复制数据 Unix有5种I/O模型: 阻塞式I/O 非阻塞式I/O I/O复用(select, pol 阅读全文
posted @ 2017-02-13 21:11 Sawyer Ford 阅读(173) 评论(0) 推荐(0)
摘要:使用到的函数: 服务器程序: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #incl 阅读全文
posted @ 2017-02-11 17:43 Sawyer Ford 阅读(461) 评论(0) 推荐(0)
摘要:使用到的函数: 客户端程序: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #incl 阅读全文
posted @ 2017-01-10 22:27 Sawyer Ford 阅读(299) 评论(0) 推荐(0)