
WinSock 异步I/O模型
文章平均质量分 87
小米的修行之路
是日已过,命亦随减;如少水鱼,斯有何乐?当勤精进,如救头燃!但念无常,慎勿放逸。
展开
-
使用CAsyncSocket和CSocket的一种通信模型
源码下载地址:点击打开链接原创 2018-03-22 18:51:35 · 355 阅读 · 0 评论 -
CAsyncSocket之服务器端应用举例
一、创建CAsyncSocket的派生类class CCntListenSock : public CAsyncSocket{// Attributespublic: HWND m_hWnd; // Operationspublic: CCntListenSock(); virtual ~CCntListenSock(); void SocketThreadInit();原创 2017-07-26 15:32:39 · 1171 阅读 · 0 评论 -
MFC之CAsyncSocket详解
发送与接收流式数据当服务器和客户端建立了连接以后,就可以在服务器的连接套接字对象和客户端的套接字对象之间传输数据了,对于流式套接字对象,使用CAsyncSocket类的Send函数向流式套接字发送数据,使用Receive函数从流式套接字接收数据1.用Send发送数据原型如下:C++virtual int Send( const void*转载 2017-07-26 14:54:07 · 1415 阅读 · 0 评论 -
MFC之CAsyncSocket详解
客户端套接字对象请求链接到服务器套接字对象使用流式套接字需要事先建立客户端和服务器之间的连接,然后才能进行数据传输。在服务器套接字对象已经进入监听状态之后,客户端应用程序可以调用CAsyncSocket类的Connect向服务器发出一个连接请求,如果服务器接收了这个连接请求,两端的链接请求就建立了起来,否则,该成员函数将返回FALSECAsyncSocket::Co转载 2017-07-26 14:51:37 · 1368 阅读 · 0 评论 -
MFC之CAsyncSocket详解
CAsyncSocket类是从Object类派生而来。CAsyncSocket对象称为异步套接字对象使用CAsyncSocket进行网络编程,可以充分利用Windows操作系统提供的消息驱动机制,通过应用程序框架来传递消息,方便地处理各种网络事件。另一方面,作为MFC微软基础类库中的一员,CAsyncSocket可以和MFC的其他类融为一体,大大扩展了网络编程的空间,方便了编程。转载 2017-07-26 14:48:55 · 18343 阅读 · 2 评论 -
套接字端口复用:SO_REUSEADDR
下面建立的套接字都是tcp套接字1.进程创建监听套接字socket1,邦定一个指定端口,并接受了若干连接。那么进程创建另外一个套接口socket2,并试图邦定同一个端口时候,bind错误返回“Address already in use”(即使使用了SO_REUSEADDR).2.进程创建监听套接字,邦定一个指定端口,并接受了若干连接,为每个连接创建子进程为连接服务。杀死监听套接字所在进程,然后重...转载 2018-06-21 16:58:15 · 1538 阅读 · 0 评论 -
struct hostent ---获取本机的IP地址
struct hostent{ char *h_name; //主机名,即官方域名 char **h_aliases; //主机所有别名构成的字符串数组,同一IP可绑定多个域名 int h_addrtype; //主机IP地址的类型,例如IPV4(AF_INET)还是IPV6 int h_length; //主机IP地址长度,IPV4地址为4,IPV6地址则...原创 2018-02-09 10:56:45 · 1278 阅读 · 0 评论 -
Socket封装类(事件对象)
直接上封装类的代码:#pragma onceclass CSocketEx{private: SOCKET m_hSocket; WSAEVENT EventArray[1];public: CSocketEx(void); virtual ~CSocketEx(void); BOOL Create(UINT nSocketPort = 0,int nSocketType原创 2018-01-09 08:34:16 · 1170 阅读 · 0 评论 -
CSocket封装类
作者:吕鑫// SockLx.h: interface for the CSockLx class.////////////////////////////////////////////////////////////////////////#if !defined(AFX_SOCKLX_H__7ED0915D_BA01_4118_9C96_33892D00FAA1__INCLUDE原创 2017-11-26 12:51:46 · 1351 阅读 · 0 评论 -
WinSock 异步I/O模型[2]---异步选择 - WSAAsyncSelect
█ 异步选择(WSAAsyncSelect)模型是一个有用的异步 I/O 模型。利用这个模型,应用程序可在一个套接字上,接收以 Windows 消息为基础的网络事件通知。具体的做法是在建好一个套接字后,调用WSAAsyncSelect函数。该模型的核心即是WSAAsyncSelect函数。█ 要想使用 WSAAsyncSelect 模型,在应用程序中,首先必须用CreateWindow...原创 2017-02-15 16:47:24 · 446 阅读 · 0 评论 -
WinSock 异步I/O模型[3]---事件选择 - WSAEventSelect
█ 事件选择(WSAEventSelect)模型是另一个有用的异步 I/O 模型。和 WSAAsyncSelect 模型类似的是,它也允许应用程序在一个或多个套接字上,接收以事件为基础的网络事件通知,最主要的差别在于网络事件会投递至一个事件对象句柄,而非投递到一个窗口例程。█ 事件通知模型要求我们的应用程序针对使用的每一个套接字,首先创建一个事件对象。创建方法是调用 WSA原创 2017-02-15 16:59:53 · 580 阅读 · 0 评论 -
WinSock 异步I/O模型[1]---选择模型 - select
█ 选择(select)模型是Winsock中最常见的 I/O模型。核心便是利用 select 函数,实现对 I/O的管理!利用 select 函数来判断某Socket上是否有数据可读,或者能否向一个套接字写入数据,防止程序在Socket处于阻塞模式中时,在一次 I/O 调用(如send或recv、accept等)过程中,被迫进入“锁定”状态;同时防止在套接字处于非阻塞模式中时,产生W原创 2017-02-15 16:23:59 · 425 阅读 · 0 评论 -
手把手教你玩转SOCKET模型:完成端口(Completion Port)详解
http://www.cnblogs.com/carekee/articles/5476813.html2011这篇文档我非常详细并且图文并茂的介绍了关于网络编程模型中完成端口的方方面面的信息,从API的用法到使用的步骤,从完成端口的实现机理到实际使用的注意事项,都有所涉及,并且为了让朋友们更直观的体会完成端口的用法,本文附带了有详尽注释的使用MFC编写的图形界面的示例代码。转载 2017-02-21 09:20:11 · 585 阅读 · 0 评论 -
WinSock 异步I/O模型[5]---完成端口+线程池技术
█ “完成端口”模型是迄今为止最复杂的一种 I/O 模型。但是,若一个应用程序同时需要管理很多的套接字,那么采用这种模型,往往可以达到最佳的系统性能!但缺点是,该模型只适用于 Windows NT 和 Windows 2000 以上版本的操作系统。█ 因其设计的复杂性,只有在你的应用程序需要同时管理数百乃至上千个套接字的时候,而且希望随着系统内安装的CPU数量的增多,应用程序的性能原创 2017-02-21 09:16:03 · 848 阅读 · 0 评论 -
手把手教你玩转SOCKET模型:完成例程(Completion Routine)篇
目录:1.完成例程的优点2.完成例程的基本原理3.关于完成例程的函数介绍4.完成例程的实现步骤5.实际应用中应该进一步完善的地方一. 完成例程的优点1. 首先需要指明的是,这里的“完成例程”(Completion Routine)并非是大家所常听到的“完成端口”(Completion Port),而是另外一种管理重叠I/O请求的方式,而至于什转载 2017-02-20 10:58:41 · 947 阅读 · 0 评论 -
手把手教你玩转SOCKET模型:重叠I/O篇 -----很不错
原文地址:原文地址“身为一个初学者,时常能体味到初学者入门的艰辛,所以总是想抽空作点什么来尽我所能的帮助那些需要帮助的人。我也希望大家能把自己的所学和他人一起分享,不要去鄙视别人索取时的贪婪,因为最应该被鄙视的是不肯付出时的吝啬。”----- 题记 By PiggyXP(小猪)前 言其实我首先应该道歉,因为7月份的时候曾信誓旦旦的说要写一套关于SOCKET所有模转载 2017-02-17 17:15:50 · 848 阅读 · 0 评论 -
WinSock 异步I/O模型[4]---重叠 I/O - Overlapped I/O
在 Winsock 中,重叠 I/O(Overlapped I/O)模型能达到更佳的系统性能,高于之前讲过的三种。因为它和这3种模型不同的是,使用重叠模型的应用程序通知缓冲区收发系统直接使用数据。也就是说,如果应用程序投递了一个10KB大小的缓冲区来接收数据,且数据已经到达套接字,则该数据将直接被拷贝到投递的缓冲区。而这3种模型中,数据到达并拷贝到单套接字接收缓冲区(Per Socket Buff原创 2017-02-17 15:10:58 · 969 阅读 · 0 评论