
Windows网络模型
文章平均质量分 85
介绍Windows的网络模型,如WSAEventSelect模型,WSAAsyncSelect模型,完成端口模型等。
china_jeffery
持续学习者;
擅长开发开源组件及相关工具;
长期致力于应用各种IT新技术提升生产效率和解决实际问题;
展开
-
如何实现一个高速文件下载器
我们从网络上下载文件时通常会使用浏览器或者迅雷这样的下载软件,他们的大多具有高速下载(下载速度快),断点续传(可以暂停之后继续下载)等特性。假如我们自己开发的应用软件中也需要支持这些下载功能,我们该如何设计和实现了?本文主要围绕这一问题进行论述。首先,我们将一个完善的文件下载库需要具有的特性列举出来:多线程分片下载断点续传磁盘缓存最高下载速率限制及实时下载速率反馈(可选)多协议支持,跨平台(可选)1. 多线程分片下载Chrome浏览器和迅雷能实现高速下载的核心就是多线程分片下载(这里忽略原创 2020-07-09 11:28:37 · 1616 阅读 · 0 评论 -
Windows套接字I/O模型(1) -- 阻塞模型
一、服务端服务端大致流程: 1. 创建Socket 2. Bind端口 3. 开始Listen 4. accept客户端连接 5. send数据到客户端 6. recv数据从客户端 7. close socket#include <winsock2.h>#include <iostream>#include <assert.h>using namespace std;#pragma原创 2017-12-11 16:55:51 · 88915 阅读 · 0 评论 -
Windows套接字I/O模型(2) -- Select模型
一、Select模型介绍套接字I/O Select模型的“中心思想”便是利用select函数,实现对I/O的管理。利用select函数判断套接字(一个或多个)上是否存在数据,或者能否向套接字写入数据。它也是同步的,也会阻塞。但和套接字I/O阻塞模型不同的是,Select模型可以同时管理多个Socket。select函数原型:int select ( int nfds,原创 2017-12-11 22:19:34 · 89171 阅读 · 0 评论 -
Windows套接字I/O模型(3) -- WSAAsyncSelect模型
一、WSAAsyncSelect模型介绍利用WSAAsyncSelect模型,结合windows窗口消息循环,应用程序可以在一个套接字上,接收以windows消息为基础的网络事件通知。要想使用WSAAsyncSelect模型,首先必须创建一个窗口,并为窗口提供一个窗口过程支持函数。int WSAAsyncSelect( _In_ SOCKET s, _In_ HWND原创 2017-12-12 16:14:24 · 89842 阅读 · 0 评论 -
Windows套接字I/O模型(4) -- WSAEventSelect模型
一、WSAEventSelect模型介绍WSAEventSelect模型和WSAAsyncSelect模型类似,它也允许应用程序在一个或多个套接字上面,接收以事件为基础的网络事件通知。该模型和WSAAsyncSelect模型的最主要的区别在于,网络事件是由事件对象句柄完成的,而不是通过窗口消息完成的。该模型要求应用程序针对打算使用的每一个套接字都创建一个事件对象。创建方法是就是调用WSAC...原创 2017-12-12 21:11:17 · 89803 阅读 · 0 评论 -
Windows套接字I/O模型(5) -- 完成端口模型
一、写在前面前面介绍了套接字I/O的同步模型、WSAAsyncSelect模型、WSAEventSelect模型,套接字I/O还剩下2个模型没有介绍:重叠模型,完成端口模型。 如果程序对性能和并发要求不高,可以使用前面介绍的WSAEventSelect模型;如果对性能和并发有要求,可以使用本文介绍的完成端口模型。 因为完成端口模型是基于重叠模型的,且在易用性、可伸缩性等方面都高于重叠模型...原创 2017-12-15 17:38:55 · 92074 阅读 · 2 评论 -
WebRTC--添加IOCP网络模型支持
一、起因webRTC在windows平台默认使用的是WSAAsyncSelect模型,该模型需要有一个windows窗口的支持,而且伸缩性、性能都比较低。 关于WSAAsyncSelect模型的介绍可以参考Windows套接字I/O模型(3) – WSAAsyncSelect模型因为webRTC是点对点的数据传输,对每一个端的性能要求并不高,采用WSAAsyncSelect模型完全是足够的。但原创 2017-12-25 15:10:43 · 94684 阅读 · 0 评论