Posts
秘秘秘秘秘密
Cancel

1. demo1 libevent 的使用 常规事件 write 客户端 // // Created by xm on 2022/4/24. // #include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <sys/types.h> #include <s...

一共三种方式: socket 选项 详情在第五章 SIGALRM 信号 IO复用系统调用超时参数 1. socket 选项 解析 具体的可以看第五章 demo int timeout_connect(const char *ip,int port ,int time){ int ret = 0; struct sockaddr_in addres...

0. 信号概述 1. 发送信号 api `int kill(pid_t pid, int sig);` 2. 处理信号 3. 信号分类 4. 中断系统调用 1. signal 函数原型 ` sighandler_t signal(int signum, sighandler_t handler);` sighandler_t 参数 ...

讲解视频 1. select系统调用 上世纪八十年代就出现了该API,现在仍有很多系统再用该API。 select系统调用的用途是,在指定时间内,监听用户感兴趣的文件描述符上的可读,可写和异常事件。 其核心思想是:在指定时间内轮训一定数量的文件描述符,以测试其中是否有就绪者。 1. select API 函数原型 int select(int nfd...

1. 服务器基本框架 IO处理单元 一个专门的接入服务器,他实现负载均衡,从所有的逻辑服务器中选取负荷最小的一台来为新客户服务。 逻辑单元 一个逻辑单元通常是一个进程或者线程,它分析并处理客户数据。 网络存储单元 数据库或者缓存(非必须) 2. IO模型 同步IO想应用程序通知的是IO就绪事件,异步IO向应...

1. 日志函数 syslog syslog 2. 用户信息 UID(真实用户ID) 与 EUID(有效用户ID) 为什么引入EUID(有效用户id)? 允许不同的用户以UID的权限运行改程序。设置set-user-id字段,任何用户启动该程序,其有效用户就是该程序的所有者 demo 切换用户 /* * 以root身份启动的进程切换为一个普通用户身份运行 */ st...

0. pipe 与 dup 1. pipe 默认为阻塞, ` int socketpair(int domain, int type, int protocol, int sv[2]);` 2. dup int dup(int oldfd); int dup2(int oldfd, int newfd); 3.demo int main(int argc,char *argv[...

03 尽可能使用const 1. 顶层与底层指针 书中的说法可能会好理解一点,出现在*号左边,表示被指物是常量。const 出现在*号的右边,表示指针是常量。出现在两边表示指针与被指物都是常量。 void f1(const Widget *pw); // 这两种写法等价 void f1(Widget const *pw); 2. 迭代器的const指针 vector&l...

1. socket 地址API 1.1 主机字节序与网络字节序 主机字节序: 简单来说,就是由多个字节组成的一个整数,字节的排序方式是从左到右还是从右到左。 分类: 大端字节序 小端字节序(主机字节序) 即使同一个主机上的两个进程通信,也要考虑字节序的问题。 解决方法:发送端都转为大端字节序,接受端都知道接受的都是大端字节序。 字节序的转换:见<net...

1. 概览 客户/服务器,交互过程包含下列3个操作: 服务器设立服务 客户链接到服务器 服务器和客户处理事务 1.1 操作1,建立服务器端socket 创建一个socket socket = socket(PF_INET,SOCK_STREAN,0); 给socket绑定一个地址 ...

Trending Tags