![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++网络编程
Kuany_
这个作者很懒,什么都没留下…
展开
-
Linux服务器开发——epoll模式web服务器代码
1. main.c#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include "epoll_server.h" int main(int argc, const char* argv[]){ if(argc < 3){ printf("eg: ./a.out port path\n"); exit(1); } // 端口 字符原创 2020-07-08 15:43:38 · 591 阅读 · 1 评论 -
面试最常问的网络IO复用之“select和epoll的区别是什么?”
本文建立在读者已了解IO复用机制的select和epoll模式的基础上进行的总结,如无此方面基础可以翻阅我之前的博客:select相关epoll相关特征selectepoll内核实现通过轮询方式检测就绪事件通过回调方式检测就绪事件时间复杂度O(n)O(1)触发模式LT电平触发LT电平触发,ET边沿触发内部实现select内部使用数组实现epoll维护的红黑树在共享内存中内核区到用户区的转换需要做内核区到用户区的转换,还需要做数据拷贝原创 2020-07-18 10:31:18 · 306 阅读 · 0 评论 -
Linux服务器开发——HTTP协议相关概念和web服务器实现伪代码
Linux服务器开发——HTTP协议相关概念和web服务器实现流程1. HTTP的特点2. HTTP协议的结构1.1 请求报文(Request) - 浏览器给服务器发1.2 响应报文(Response) - 服务器给浏览器发3. web服务器端伪代码Http协议是一种广泛流行的网络应用层协议。设计HTTP最初的目的是为了提供发布和接收HTML页面的方法。用于客户端和服务器端通信的通信的规则的制定(所谓协议就是约定的规则,好比人与人之间的交流没有约定的规则是无法交流的).只要是遵守Http协议的浏览器原创 2020-07-05 10:08:33 · 363 阅读 · 0 评论 -
Linux网络编程基础7(Linux下libevent的使用(不带缓冲区的event和带缓冲区的bufferent))
Linux网络编程基础7(Linux下libevent的使用(不带缓冲区的event和带缓冲区的bufferent))1. libevent介绍和安装1.1 libevent简介1.2 libevent安装2. 不带缓冲区的event使用流程2.1 创建事件处理框架——event_base2.1 事件创建 ——event_new2.2 设置未决/非未决事件2.2.1 设置未决事件——把event_new事件添加到事件处理框架上2.2.2 设置非未决——从树上摘下event_new事件2.3 事件循环2.3.原创 2020-07-18 10:31:02 · 424 阅读 · 0 评论 -
Linux网络编程基础6(广播,组播,本地套接字通信,心跳包)
Linux网络编程基础6(广播,组播,本地套接字通信,心跳包)1. 广播1.1 广播地址1.2 补充——网关1.3 广播代码的编写流程1.3.1 服务端1.3.2 客户端1.4 广播代码的实现1.4.1 服务端1.4.2 客户端2. 组播1.1 组播地址1.2 组播需要用到的结构体1.3 组播代码实现1.3.1 服务端1.3.2 客户端3. 本地套接字通信3.1 本地套接字进程通信框架3.2 服务端流程及完整代码3.3 客户端流程及完整代码4. 心跳包(了解)UDP的特点是不建立连接,数据传输方式为数据报原创 2020-07-17 11:16:22 · 588 阅读 · 0 评论 -
Linux网络编程基础5(epoll,epoll三种工作模式,UDP通信流程,TCP和UDP的使用场景)
Linux网络编程基础5(epoll,epoll三种工作模式,UDP通信流程)1. epoll1.1 相关函数1.1.1 epoll_creae1.1.2 epoll_ctl1.1.3 epoll_wait1.2 epoll比select和poll效率高的原因1.3 epoll注意事项1.4 epoll工作流程伪代码1.5 epoll应用实例完整代码1.6 epoll应用实例22. epoll的三种工作模式2.1 水平触发模式(默认工作模式)2.2 边沿触发模式——ET(是阻塞的)2.3 边沿非阻塞触发——原创 2020-07-16 16:36:49 · 714 阅读 · 0 评论 -
Linux网络编程基础4(TCP通信过程中的主要状态,端口复用,IO复用(I/O多路转接技术)之select、poll)
Linux网络编程基础3(TCP通信过程中的主要状态,端口复用,IO复用(I/O多路转接技术)之select、poll)1. TCP过程中的状态转换1.1 TCP过程中状态转换流程图1.2 分析:哪些状态能捕捉到,哪些捕捉不到(假定客户端发起断开)1.3 半关闭和shutdown函数1.4 netstat命令2. 端口复用3. IO复用3.1 IO操作方式3.1.1 阻塞等待3.1.2 非阻塞,忙轮询3.2 IO操作方式弊端的解决方式3.3 I/O多路转接技术实现步骤3.4 select3.4.1 sele原创 2020-07-16 01:00:55 · 310 阅读 · 0 评论 -
Linux网络编程基础3(TCP三次握手四次挥手,滑动窗口,多进程、多线程并发服务器)
Linux网络编程基础3(TCP三次握手四次挥手,滑动窗口,多进程、多线程并发)1. TCP建立连接,传送数据,断开连接过程1.1 TCP三次握手建立连接过程1.2 TCP传输数据过程1.3 TCP四次挥手断开连接过程1.4 TCP滑动窗口2. TCP多进程并发服务器2.1 多进程并发服务器创建原理2.2 读时共享,写时复制的原理2.3 多进程并发服务器伪代码2.4 多进程服务端的完整实现例子3. TCP多线程并发服务器3.1 多线程并发服务器伪代码3.2 多线程实现并发的完整实现例子1. TCP建立连接原创 2020-07-14 22:05:20 · 391 阅读 · 0 评论 -
网络编程笔记
Linux网络编程基础1(网络应用程序设计模式,分层模型,协议格式)Linux网络编程基础2(socket编程,字节序,网络套接字函数,服务端创建连接的过程,客户端创建连接的过程,socket函数封装)...原创 2020-07-18 10:31:37 · 245 阅读 · 0 评论 -
Linux网络编程基础2(socket编程,字节序,网络套接字函数,服务端创建连接的过程,客户端创建连接的过程,socket函数封装)
Linux网络编程基础2(socket编程,字节序,网络套接字函数,服务端创建连接的过程,客户端创建连接的过程,socket函数封装)1. 套接字概念2. 网络字节序2.1 网络字节序相关概念2.2 相关函数2.3 sockaddr数据结构3. 网络套接字函数3.1 创建套接字3.2 将本地的IP和端口与创建出的套接字绑定3.3 设置==同时==连接到服务器的客户端的个数3.4 阻塞等待客户端连接请求, 并接受连接3.5 链接3.6 创建网络套接字过程总览4. 服务端创建连接的过程5. 客户端创建连接的过程原创 2020-07-14 13:03:19 · 380 阅读 · 0 评论 -
Linux网络编程基础1(网络应用程序设计模式,分层模型,协议格式)
Linux网络编程基础(网络应用程序设计模式,socket编程,inet_pton,inet_ntop,服务端创建连接的过程,客户端创建连接的过程,socket函数封装)1. 网络应用程序设计模式2. 分层模型3. 协议3.1 协议的概念3.2 协议格式3.2.1 以太网帧格式 -- 借助mac地址完成数据报传递3.2.2 IP段格式3.2.3 UDP数据包格式3.2.4 TCP数据报格式4. 数据的发送和接收5. TCP/UDP简要1. 网络应用程序设计模式1. C/S - client/server原创 2020-06-23 11:36:07 · 870 阅读 · 0 评论