网络编程——IOCP函数
来源:互联网 发布:php单例模式实例 编辑:程序博客网 时间:2024/06/06 02:47
CreateIoCompletionPort(
_In_ HANDLE FileHandle,
_In_opt_ HANDLE ExistingCompletionPort,
_In_ ULONG_PTR CompletionKey,
_In_ DWORD NumberOfConcurrentThreads
);
这个函数都说是端口绑定,我觉得不太准确,在网络编程的时候,会先使用这个函数创建一个完成端口,然后再次调用他,将创建的完成端口作为第二个参数传入,实现端口绑定。
在网络编程IOCP模型中,我们会为每一个客户new一个对象,但是客户socket并非就是与你new的这个对象绑定的,他通过socket发消息,你就接受了socket,如果是一个还好,如果很多,你有如何分辨。
而这个函数就是这个作用,告诉完成端口,那个socket对应哪个对象,第一个参数就是socket,第三个参数,就是你要绑定的对象,如果是局部的,没有用,必须是全局的。
WSARecv(
_In_ SOCKET s,
_In_reads_(dwBufferCount) __out_data_source(NETWORK) LPWSABUF lpBuffers,
_In_ DWORD dwBufferCount,
_Out_opt_ LPDWORD lpNumberOfBytesRecvd,
_Inout_ LPDWORD lpFlags,
_Inout_opt_ LPWSAOVERLAPPED lpOverlapped,
_In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);
BOOL
WINAPI
GetQueuedCompletionStatus(
_In_ HANDLE CompletionPort,
_Out_ LPDWORD lpNumberOfBytesTransferred,
_Out_ PULONG_PTR lpCompletionKey,
_Out_ LPOVERLAPPED * lpOverlapped,
_In_ DWORD dwMilliseconds
);
这两个函数一起介绍,
WSARecv这个函数,请求完成端口帮我接收recv事件触发时发过来的数据。不要被他迷惑了,前几个我就不说了,就说倒数第二个。
在网络编程IOCP模型中,WSARecv这个函数的倒数第二个函数传入的是个缓冲区,真正的意义是,数据真正接受的地方,GetQueuedCompletionStatus这个函数从IOCP队列中接受数据,就是从WSARecv倒数第二个参数中寻找数据,然后将数据给GetQueuedCompletionStatus倒数第二个参数。
关于别的,网上好像都能找到,就不写了
- 网络编程——IOCP函数
- 网络编程(IOCP)
- 网络编程(完成端口IOCP)
- IOCP模型与网络编程
- IOCP模型与网络编程
- IOCP模型与网络编程
- IOCP模型与网络编程
- IOCP模型与网络编程
- IOCP模型与网络编程
- IOCP模型与网络编程
- IOCP模型与网络编程
- IOCP模型与网络编程
- IOCP模型与网络编程
- IOCP模型与网络编程
- IOCP模型与网络编程
- IOCP模型与网络编程
- iocp模型与网络编程
- IOCP模型与网络编程
- 05-树9 Huffman Codes
- socfpga armv7 u-boot学习记录
- iOS tableview cell 多选 (批量邀请好友)
- django的安装
- iOS-利用粒子发射器(CAEmitterLayer) 制作发射动画
- 网络编程——IOCP函数
- Shell脚本的几种字符串子串获取
- 知识库
- 针对android HttpUrlConnection 访问含%地址访问失败问题
- 双栈排序
- svn的使用详细介绍
- Linux命令大全—all adb dif cmp 等
- Linux内核OOM机制分析
- 20秒 教你maven2的pom文件的依赖包如何写