首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WinSock Socket 池

之前在WinSock2.0 API 中说到,像DisConnectEx 函数这样,它具有回收SOCKET的功能,而像AcceptEx这样的函数,它不会自己在内部创建新的SOCKET,需要外部传入SOCKET...SOCKET池 WinSock 函数就是为了提升程序的性能而产生的,这些函数主要使用与TCP协议,我们可以在程序启动的时候创建大量的SOCKET句柄,在必要的时候直接使用AcceptEx这样的函数来使用已有的...IOCP本身也是一个线程池,如果用它结合WinSock 的线程池将会是Windows系统上最佳的性能组合,当然在此基础上可以考虑加入线程池、内存池的相关技术来进一步提高程序的性能。...注意这里我们先对每个SOCKET进行了绑定,这个在一般的SOCKET客户端服务器模型中没有这个操作,这个操作是WinSock API2.0需要的操作。...而在Winsock中将这种理念发挥到了SOCKET的传输上。WSABUF正是用于这个理念的产物。

1.2K10
您找到你想要的搜索结果了吗?
是的
没有找到

WinSock 重叠IO模型

---- title: WinSock 重叠IO模型 tags: [WinSock 模型, 网络编程, 重叠IO模型] date: 2018-06-29 20:26:13 categories:...Windows 网络编程 keywords: WinSock 模型, 网络编程, 重叠IO模型 --- 之前介绍的WSAAsyncSelect和WSAEvent模型解决了收发数据的时机问题,但是网卡这种设备相比于...这也是在WinSock1中,使用WriteFile和ReadFile来进行网络数据读写的原因。既然它本质上也是CPU需要等待慢速的设备,那么为了效率它必定可以支持异步操作,也就可以使用重叠IO。...在WinSock1.0 中可以使用ReadFile和WriteFile来支持重叠IO,但是WinSock2.0 中重新设计的一套函数来支持重叠IO WSASend (send的等价函数) WSASendTo...在main函数中首先完成了WinSock环境的初始化然后创建监听套接字,绑定,监听。

1.8K20

WinSock 完成端口模型

之前写了关于Winsock的重叠IO模型,按理来说重叠IO模型与之前的模型相比,它的socket即是非阻塞的,也是异步的,它基本上性能非常高,但是它主要的缺点在于,即使我们使用历程来处理完成通知,但是我们知道历程它本身是在对应线程暂停...处于这个思想,WinSock提供了一个新的模型——完成端口模型。 完成端口简介 完成端口本质上是一个线程池的模型,它需要我们创建对应的线程放在那,当完成通知到来时,他会直接执行线程。...在Winsock中如果要绑定SOCKET到完成端口只需要将SOCKET强转为HANDLE。 第二个参数是一个已知的完成端口句柄,如果是创建完成端口,这个参数填入NULL。

93320

LSP(分层服务提供者)

LSP本身是DLL,可以将它安装到winsock目录,以便创建套接字的应用程序不必知道此LSP的任何信息就能调用它。...这样便截获所有的winsock调用了。 服务提供者本身是DLL,导出一些与winsock API相对应的SPI函数。winsock库加载服务提供者时,便依靠这些函数来实现winsockAPI。...(也叫做协议入口) 协议链:   协议链描述了 分层提供者 加入winsock的目录的顺序。...安装LSP时,必须在winsock目录中安装两种协议:一个分层协议,一个协议链。 安装分层协议视为了获取winsock库分配的目录ID号,一边在协议链中标识自己的位置。...协议链才是winsock目录中LSP的真正入口,连中包含了自己分层协议的目录ID号和下层提供者的目录ID号。

1.8K50

Windows下网络编程(win32API+VS2022)

在Windows下进行网络编程,可以使用Winsock API(Windows Sockets API)来实现。...下面是常用的Winsock API接口函数: (1)WSAStartup:初始化Winsock库,必须在使用其他Winsock函数之前调用。 (2)socket:创建一个套接字,用于网络通信。...实现的功能:初始化Winsock、创建套接字、绑定到本地地址和指定端口、监听连接请求、接受客户端连接、发送和接收数据,最后关闭套接字和清理Winsock资源。.../告诉编译器链接Winsock库 int main() { WSADATA wsaData; //创建一个结构体变量,用于存储关于Winsock库的信息 int result = WSAStartup...,用于存储关于Winsock库的信息 int result = WSAStartup(MAKEWORD(2, 2), &wsaData); //初始化Winsock库,指定版本号2.2,检查返回值

6800
领券