小威
...
摘要: 1.练习 : 简单的Web服务器 1 #ifndef _HEAD_H_ 2 #define _HEAD_H_ 3 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 12 #define MAX 102413 #define MAX_LISTEN 1014 #define MAX_PATH 3715 #define MAX_NAME 1816 17 #define SER_IP "127.0.0.1"18 #define SER_PORT 800019 #defin 阅读全文
posted @ 2013-09-23 20:05 小威_ 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 1.并发服务器与客户端 (UDP) 1 //client.c 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 9 #define MAX 10 10 #define MAXLINE 18 11 #define SERV_PORT 8000 12 13 int main(int argc, char *argv[]) 14 { 15 struct sockaddr_in servaddr; 16 int sockfd = 0, n = 0, number ... 阅读全文
posted @ 2013-09-22 18:24 小威_ 阅读(190) 评论(0) 推荐(1) 编辑
摘要: 1.TCP协议规定,主动关闭的一方要处于TIME_WAIT状态,等待两个MSL的时间后才能回到CLOSED状态, MSL在RFC1122中规定为两分钟 2.connfd对应的是与某个客户端通讯的一个具体的IP地址,而listenfd对应的是wildcard address 问题 : 在server的TCP连接没有完全断开之前不允许重新监听是不合理的 解决方法 : 使用setsockopt()设置socket描述符的选项SO——REUSEADDR为1,表示允许创建端口号相同但IP地址不同的多个socket描述符。 位置 : 在server代码的soc... 阅读全文
posted @ 2013-09-22 17:53 小威_ 阅读(352) 评论(0) 推荐(0) 编辑
摘要: 1.IPv4和IPv6的地址格式定义在netinet/in.h中, IPv4地址用sockaddr_in结构体表示,包括16位端口号和32位IP地址, IPv6地址用sockaddr_in6结构体表示, 包括16位端口,128位IP地址和一些控制字段。 2.Socket的地址格式定义在sys/un.h中,用sockaddr_un结构体表示。各种sockket地址结构体的开头都是相同的,前16位表示整个结构体的长度,后16位表示地址类型。 3.IPv4 地址类型 AF_INET IPv6 地址类型 AF_INET6 Unix Domain S... 阅读全文
posted @ 2013-09-21 08:40 小威_ 阅读(253) 评论(1) 推荐(0) 编辑
摘要: 1.OSI(open standart interface)TCP/IPApplication layer(应用层)应用层(Application)Session layer(会话层)Presentation layer(表示层)Transport layer(传输层)传输层(Transport)IP layer(网络层)网络层(Network)Data_link layer(数据链接层)链路层(Link)Physical layer(物理层) 2.传输层及其以下的机制由内核提供, 应用层由用户进程提供 3. 封装 : 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部 ... 阅读全文
posted @ 2013-09-17 23:24 小威_ 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 1.fetch (获取) 2.对于多线程的程序的访问冲突问题,,引入互斥锁来解决 3.初始化和销毁 函数原型 :#include int pthread_mutex_destroy(pthread_mutex_t *mutex); int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t * restrict attr); pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; 加锁和解锁 函数原型 ... 阅读全文
posted @ 2013-09-16 18:35 小威_ 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 1.一个进程可以包含多个线程,线程是进程的子集 2.同一进程的多个线程共享同一个地址空间 共享资源 : 文件描述符表 每种信号的处理方式(SIG_IGN, SIG_DFL, 或者自定义的信号处理函数) 当前工作目录 用户id和组id 不共享资源 : 线程id 上下文, 包括寄存器的值, 程序计数器和栈指针 栈空间 errno变量 信号屏蔽字 调度优先级 3.在Linux上线程函数位于l... 阅读全文
posted @ 2013-09-16 18:16 小威_ 阅读(137) 评论(0) 推荐(0) 编辑
摘要: 1.如果信号的处理动作是用户自定义函数, 在信号递达时就调用这个函数, 这称为捕捉信号 1.用户程序注册了SIGQUIT信号的处理函数sighandler。 2.当前正在执行 main函数, 这时发生中断或异常切换到内核 3.在中断处理完毕后要返回用户态的main函数之前检查到有信号SIGQUIT递达 4.内核决定返回用户态后不是恢复main函数的上下文继续执行,而是执行sighandler函数,sighandler和 main函数使用不同的堆栈空间, 它们之间不存在调用和被调用的关系, 是两个独立的控制流程 5.sig... 阅读全文
posted @ 2013-09-16 17:48 小威_ 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 1.信号的三种响应方式 ; 忽略, 默认响应, 自定义 2.信号相对于进程的控制流程来说是异步的。 3.使用kill -l 查看系统定义的信号列表 1-33 不支持排队 34-64支持排队 例 ; Ctrl-C产生SIGINT信号, Ctrl-\产生SIGQUIT信号, Ctrl-Z产生 SIGTSTP 信号(可使前台进程停止) 4.SIGQUIT的默认处理动作是终止进程并且Core Dump ulimit -c 1024 : 允许core文件爱女最大为1024K 5.kill命令是调用kill函数实现的。 6.kill函数的作用 ; 可以给一个... 阅读全文
posted @ 2013-09-11 17:30 小威_ 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 1.ipc机制 2. Socket 是目前最广泛使用的IPC机制。 3.进程之间传递信息的各种途径 : (1)父进程通过fork可以将打开文件的描述符传递给子进程 (2)子进程结束时, 父进程调用wait可以得到子进程的终止信息 (3)几个进程可以在文件系统中读写某个共享文件, 也可以通过给文件加锁来实现进程间同步 (4)进程之间互发信号, 一般使用SIGUSR1和SIGUSR2实现用户自定义功能管道 (5)FIFO (6)mmap函数, 几个进程可以映射同一内存区 (7)SYS V I... 阅读全文
posted @ 2013-09-11 16:51 小威_ 阅读(96) 评论(0) 推荐(0) 编辑