
C语言
文章平均质量分 56
xundao_803817
这个作者很懒,什么都没留下…
展开
-
UDP/IP 事件选择模型
事件选择模型核心:为每一个socket创建一个事件对象,将socket和对应的事件对象绑定到一起,并投递给操作系统,由操作系统帮我们进行监视,当对应的socket有响应,该对应的事件会被置成有信号,我们获取该信号,进行分类处理。UDP/IP 事件选择模型:UDP/IP 是面向非连接的,不可靠的,基于数据报的传输层协议;对于服务端只有一个socket(服务端socket),直接创建一个事件对象,将该socket和对应的事件对象进行绑定,并投递给系统,之后等待信号,获取信号,之后进行分类处理。原创 2021-08-24 11:11:16 · 382 阅读 · 0 评论 -
UDP/IP select模型
select模型服务端代码:UDP/IP: UDP/IP协议的C/S模型不存在傻等的问题,而select模型只是能让recvfrom更灵活一些 select 代码逻辑: 1.所有的socket装进一个集合FD_SET UDP只有一个socket即将服务端的socket装进集合中就可以了 2.通过select函数,检测中的socket集合中...原创 2021-08-21 15:20:41 · 659 阅读 · 0 评论 -
二叉树的存与遍历
实现如下图的中序遍历利用栈实现中序遍历:声明二维数组 类型为 struct treeNode* 定义一个移动的指针节点,记录要遍历的节点进行入栈、出栈代码:#include <stdio.h>#include <stdlib.h>/* 二叉树:是树形结构的一个重要类型 二叉树特点:是每个节点最多只能有两颗子树,且有左右之分 二叉树是n个有限元素的集合,该集合或者为空、或者由一个称为根(root) 的元素以及两不相交的、被分别称为左子树和.原创 2021-08-20 10:18:30 · 125 阅读 · 0 评论 -
队列 -- 双向循环链表实现
代码:#include <stdio.h>#include <stdlib.h>#include <stdbool.h>/* 队列--双向循环链表实现 通过对线性表的插入删除操作在异端完成 比如: 头插入对应的是尾删除 尾插入对应的是头删除 出数据的一端是队头,进数据的是队尾 栈: 先进后出 队列: 先进先出*/// 创建双向循环链表节点struct Node{ int a; struct Node* pPr.原创 2021-08-19 10:50:07 · 348 阅读 · 0 评论 -
TCP/IP 完成端口
完成端口是对重叠IO的直接优化在重叠IO上进行优化:1.创建完成端口HANDLE WINAPI CreateIoCompletionPort( _In_ HANDLE FileHandle, // 填 INVALID_HANDLE_VALUE _In_opt_ HANDLE ExistingCompletionPort, // 对现有i/o完成端口或空的句柄。 填NULL _In_ ULONG_PTR CompletionKey, // 填0原创 2021-08-18 16:06:22 · 262 阅读 · 0 评论 -
重叠IO之完成例程
重叠IO事件通知与完成例程的区别:重叠IO事件通知:需要调用 WSAGetOverlappedResult,获取等到事件的结果,然后根据逻辑,进行分类处理;重叠IO完成例程:主要是通过处理WSARecv函数的回调函数,和处理WSASend函数的回调函数,不用进行循环去获取等待事件的结果,系统会自动调用回调函数进行处理,完成例程的性能更好回调函数:void CALLBACK CompletionROUTINE( IN DWORD dwError, // 错原创 2021-08-13 15:10:15 · 513 阅读 · 0 评论 -
重叠IO之事件通知
重叠IO: 重叠IO是Windows提供的一种异步读写文件的机制 正常读写文件(socket本质就是文件操作),如recv,是阻塞的, 等协议缓存区中的数据全部复制进行自定义的buffer字符数组里, 函数才结束并返回复制的个数,写也一样,同一时间只能读写一个,其他的都被阻塞, 只能等读写操作完成之后阻塞才被解除 重叠IO机制读写,将读的指令以及自定义的buffer投给操作系统,然后函数直接返回,操作系统独立开个线程,...原创 2021-08-12 10:55:41 · 175 阅读 · 0 评论 -
TCP/IP网络模型之异步选择模型
异步选择模型是基于窗口实现窗口的创建如下:1.创建窗口结构体typedef struct tagWNDCLASSEXW { UINT cbSize; UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HINSTANCE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH原创 2021-08-04 15:19:45 · 278 阅读 · 0 评论 -
TCP/IP 事件选择模型
服务端:1.打开网络库int WSAStartup(WORD wVersionRequired, LPWSADATA lpWSAData);2.校验版本号2 != HIBYTE(wsaData.wVersion) || 2 != LOBYTE(wsaData.wVersion) // (检验版本号是 2.2)3.创建socket 套接字SOCKET socket(int af, int type, int protocol);4.绑定地址与端口号int bind(.原创 2021-08-01 15:12:00 · 350 阅读 · 0 评论