摘要: select 的优点:大多数操作系统都支持 epoll 优点:内部的 epoll 空间是由红黑树构成,而 select 与 poll 都是线性表,发生事件时不需要遍历所有文件描述符,可以直接找到发生事件的集合 typedef union epoll_data { void *ptr; int fd; 阅读全文
posted @ 2023-03-28 16:41 hzy0227 阅读(16) 评论(0) 推荐(0) 编辑
摘要: TCP/IP网络编程 -- (十二)I/O复用 如果为了并发使用多进程服务器,代价很大。因为创建进程需要大量的运算和内存空间,并且相互之间的数据交换也要用管道这种相对复杂的方法 复用技术在服务器端的应用 12.2理解select并实现服务器端 select 可以将多个文件描述符集中到一起监视 要把 阅读全文
posted @ 2023-03-17 13:26 hzy0227 阅读(26) 评论(0) 推荐(0) 编辑
摘要: TCP/IP网络编程 -- (十一)进程间通信 进程间通信基本概念 因为两个进程间具有完全独立的内存空间,因此通信需要特殊的方式 通过管道实现进程间通信 管道并非进程的资源,与 socket 类似是操作系统的资源(也就不是 fork 的复制对象),两个进程通过操作系统提供的内存空间通信 #inclu 阅读全文
posted @ 2023-03-16 17:52 hzy0227 阅读(31) 评论(0) 推荐(0) 编辑
摘要: TCP/IP网络编程 -- (十)多进程服务器端 10.1进程概念及应用 为了提高客户端的平均满意度,通常会使用并发服务器的方法,并且网络程序中数据通信时间比 CPU 运算时间大,因此向多个客户端提供服务是一种有效利用 CPU 的方式 主要有三种方法: 多进程服务器:通过创建多个进程提供服务 多路复 阅读全文
posted @ 2023-03-16 17:51 hzy0227 阅读(34) 评论(0) 推荐(0) 编辑
摘要: TCP/IP网络编程 -- (九)套接字的多种可选项 之前写的程序都是创建好 socket 后未经特殊设置直接使用,但有时需要更改 getsockopt & setsocket 可以对上述的可选项进行读取和设置操作(有些只能进行一种操作) 读取和设置根据以下两个函数完成 #include <sys/ 阅读全文
posted @ 2023-03-15 19:54 hzy0227 阅读(35) 评论(0) 推荐(0) 编辑
摘要: TCP/IP网络编程 -- (八)域名及网络地址 8.2IP地址与域名之间的转换 由于网站的域名基本不会变更,而IP会频繁变动,因此程序员应利用域名编写程序,每次运行时程序根据域名获取IP,再接入服务器,这样程序就不会依赖于服务器的IP了,因此程序中也需要IP与域名转换的函数。 #include < 阅读全文
posted @ 2023-03-15 19:52 hzy0227 阅读(42) 评论(0) 推荐(0) 编辑
摘要: TCP/IP网络编程 -- (七)优雅地断开套接字连接 7.1基于TCP的半关闭 Linux 中的 close 与 Windows 中的 closesocket 函数都是完全断开连接。此时既无法发送也不能接受数据 更多情况下需要半关闭,可以传输不能接受,或可以接受不能传输 close 会同时断开这两 阅读全文
posted @ 2023-03-15 16:11 hzy0227 阅读(30) 评论(0) 推荐(0) 编辑
摘要: TCP/IP网络编程 -- (五)基于 TCP 的服务端/客户端(2) 5.1回声服务器的完美实现 由于上一章末尾提到的问题 write(sock, message, strlen(message)); str_len = read(sock, message, BUF_SIZE - 1); mes 阅读全文
posted @ 2023-03-14 17:26 hzy0227 阅读(37) 评论(0) 推荐(0) 编辑
摘要: TCP/IP网络编程 -- (四)基于 TCP 的服务端/客户端(1) 4.2实现基于 CP 的服务器端/客户端 等待连接请求阶段 #include <sys/socket.h> int listen(int sock, int backlog); 成功返回 0,失败返回 -1 sock :希望进入 阅读全文
posted @ 2023-03-14 17:25 hzy0227 阅读(92) 评论(0) 推荐(0) 编辑
摘要: TCP/IP网络编程 -- (三)地址族与数据序列 3.2地址信息的表示 创建好一个 socket 并准备监听传入连接时,要调用 bind 函数来指定 socket 监听的ip地址与端口 #include <sys/socket.h> int bind(int sockfd, struct sock 阅读全文
posted @ 2023-03-13 22:01 hzy0227 阅读(32) 评论(0) 推荐(0) 编辑