网络编程
文章平均质量分 87
袁君(Louis)
这个作者很懒,什么都没留下…
展开
-
Linux编程:1. 协程的设计原理
协程(Coroutine)是一种用户态的轻量级线程,也称为微线程。协程不同于操作系统提供的线程,它在程序中是由用户自己控制调度的,可以看做是一种特殊的函数或代码块,可以暂停执行并保存当前状态,在需要的时候恢复执行。协程通常用于异步编程、高并发、网络编程等领域,能够有效地提高程序的性能和资源利用率// 协程函数指针 void * arg;// 协程执行函数参数指针 char * stack;// 协程栈空间指针 size_t stack_size;// 协程栈空间大小 jmp_buf env;原创 2023-05-07 00:18:11 · 566 阅读 · 0 评论 -
网络基础:5. UDP的可靠传输协议QUIC
UDP (User Datagram Protocol) 是一种无连接的网络传输协议,它不保证数据传输的可靠性和顺序,但具有高效、低延迟和灵活的特点。UDP常用于实时通信应用程序,例如音频、视频和在线游戏等。由于UDP将数据包发送到目标地址,而不需要建立连接,因此它比TCP更加简单、轻量级和快速。但是,由于它不提供数据完整性检查和重传机制,因此在一些应用场景下可能会出现数据丢失或错误的问题。原创 2023-05-05 23:20:45 · 1305 阅读 · 0 评论 -
网络基础:4. Posix API与网络协议栈
POSIX API(Portable Operating System Interface API)是一组可移植的操作系统接口,用于在不同的UNIX类操作系统之间实现更好的兼容性。该API定义了一系列标准函数和常量,以及许多其他规范,包括文件系统层次结构、进程控制、信号处理、线程管理、内存管理等。POSIX API使得开发人员能够编写具有较高可移植性的应用程序。原创 2023-05-05 20:39:06 · 279 阅读 · 0 评论 -
网络编程:2. Reactor与Proactor
通过使用事件处理模型,我们可以将代码结构化、模块化,并且可以更容易地维护和扩展。同时,事件处理模型也能够提高程序的并发性和响应性,因为事件处理器可以在不阻塞主线程的情况下异步处理事件。原创 2023-04-18 22:59:41 · 120 阅读 · 0 评论 -
网络编程:1. 理论基础
在计算机领域中,IO通常指计算机与外部设备进行数据交互的过程,例如从硬盘读取文件或将数据输出到打印机等。IO操作通常是比较耗时的,因为需要和外部设备进行交互。原创 2023-04-13 00:06:54 · 86 阅读 · 0 评论 -
网络编程:2. reactor的原理与实现
epoll是Linux内核为处理大批量文件描述符(FD)而做了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。原创 2023-02-11 23:39:11 · 142 阅读 · 0 评论 -
网络编程:1. 网络IO与select
当打开一个文件时,内核向进程返回一个文件描述符(open系统调用得到),后续read、write这个文件时,只需要用这个文件描述符来标识该文件,将其作为参数传入read、write就能读写文件。下面是最基础的TCP端口监听代码,默认创建socket的listenfd是阻塞的,如果需要变成非阻塞的,需要使用fcntl这个函数去对listenfd做或操作(位运算)socket套接字是一种通信机制,提供了TCP/IP协议的抽象,对外提供了一套接口,通过这个接口可以统一、方便的使用TCP/IP协议的功能。原创 2023-02-10 20:52:00 · 123 阅读 · 0 评论