![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
网络编程
姜蒋酱7
这个作者很懒,什么都没留下…
展开
-
epoll反应堆模型
epoll 反应堆模型:epoll ET模式 + 非阻塞、轮询 + void *ptr。原来: socket、bind、listen -- epoll_create 创建监听 红黑树 -- 返回 epfd -- epoll_ctl() 向树上添加一个监听fd -- while(1)-- -- epoll_wait 监听 -- 对应监听fd有事件产生 -- 返回 监听满足数组。 -- 判断返回数组元素 -- lfd满足 -- Accept -- cfd 满足 -- read() --- 小-原创 2020-11-12 11:03:55 · 211 阅读 · 0 评论 -
epoll实现多路io转接
epoll实现多路IO转接思路:lfd = socket(); 监听连接事件lfdbind();listen();int epfd = epoll_create(1024); epfd, 监听红黑树的树根。struct epoll_event tep, ep[1024]; tep, 用来设置单个fd属性, ep 是 epoll_wait() 传出的满足监听事件的数组。tep.events = EPOLLIN; 初始化 lfd的监听属性。tep.data.fd = lfd原创 2020-11-12 10:58:53 · 207 阅读 · 0 评论 -
利用epoll函数实现服务器
使用epoll(本质是一棵监听红黑树)主要在于记住三个函数的调用,以及相应参数、返回值等int epoll_create(int size); 创建一棵监听红黑树 返回根节点int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event); 操作监听红黑树epfd监听红黑树的树根op对红黑树所要进行的操作 : EPOLL_CTL_ADD 添加fd到 监听红黑树 EPOLL_CTL_MOD 修改fd在 监听红黑树上的监听事件原创 2020-11-10 21:21:44 · 226 阅读 · 0 评论 -
poll函数建立服务器
int poll(struct pollfd *fds, nfds_t nfds, int timeout);fds:监听的文件描述符【数组】 struct pollfd { int fd: 待监听的文件描述符 short events: 待监听的文件描述符对应的监听事件 取值:POLLIN、POLLOUT、POLLERR short revnets: 传入时, 给0。如果满足对应事件的话, 返回 非0 --> POLLIN、POLLOUT、POL原创 2020-11-10 21:03:20 · 179 阅读 · 0 评论 -
select实现多路io转接
(内核提供函数)int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval *timeout); nfds:监听的所有文件描述符中,最大文件描述符+1 readfds: 读 文件描述符监听集合。 传入、传出参数 writefds:写 文件描述符监听集合。 传入、传出参数 NULL exceptfds:异常 文件描述符监听集合 传入、传出参数 NULL timeout:原创 2020-11-10 16:52:51 · 164 阅读 · 0 评论 -
多线程并发服务器思路建立
1.socket 函数创建套接字 lfd2.bind 绑定地址结构3.listen 设置监听上限while (1) { cfd = Accept(lfd, ); pthread_create(&tid, NULL, tfn, (void *)cfd);//创建子线程 pthread_detach(tid); // pthead_join(tid, void **); 新线程---专用于回收子线程。 }5. 子线程: void *tfn(void *arg)原创 2020-11-10 16:17:52 · 199 阅读 · 0 评论 -
多进程并发服务器思路建立
1.socket 函数创建套接字 lfd2.bind 绑定地址结构3.listen 设置监听上限4.循环监听客户端连接请求5.子进程关闭lfd(用于监听客户端连接文件描述符)完成指定任务6.父进程关闭cfd(关闭与客户端进行数据通信的文件描述符)注册信号捕捉函数,回收子进程注:如果不进行信号捕捉 子进程回收,就会产生僵尸进程代码实现(实现客户端小写转大写功能)1.#include <stdio.h> 2.#include <ctype.h> 3.#inc原创 2020-11-10 15:49:30 · 196 阅读 · 0 评论 -
网络编程的一些基础知识
OSI 七层模型:物理 数据链路 网络 传输 会话 表示 应用TCP/IP 4层模型:应用 传输 网络 链路原创 2020-11-10 15:29:20 · 113 阅读 · 0 评论 -
利用Socket套接字实现一个基本的c/s通信模型
几个主要的函数:服务器端:socket() 产生一个套接字,返回一个新套接字对应的文件描述符(不用于接下来与客户端通信,而是用来监听)bind() 绑定服务器端地址结构listen() 不是监听 是用来设置与服务器端链接上限个数(同时进行三次握手的客户端数量)accept()阻塞等待客户端建立连接,成功返回一个与客户端成功链接的socket文件符客户端:connect() 与服务器建立链接客户端不需要bind绑定地址结构,系统会隐式绑定...原创 2020-11-03 21:46:06 · 526 阅读 · 0 评论