纯重叠io服务器模型

 

基础:套接字重叠io

客户端: telnet 或者自己随意写一个;

纯重叠实现的服务器模型,基本上就是使用OVERLAPPED和APC函数完成.

APC函数即需要使用alterable状态的函数 , 例 SleepEx.

另外重叠io与非阻塞是2个概念.

下面的代码中使用到了非阻塞io, 仅仅作用在了accept上. 让其不阻塞;

原因是如果阻塞accpet 就没法调用到Sleepex上,那么APC函数将无法被调用,因此使用非阻塞;

 

这种纯重叠io模型的服务器缺点是既要accept,又要让线程进入alterab;e状态

这个例子同时解释了非阻塞io. 和重叠io : 可以把设置非阻塞的函数注释.看看效果



#include "stdafx.h"
#include "../utils.h"
#define BUFFSIZE 8192


//自定义一块数据. 用于放入OVERLAPPED的Event中,以便传入APC
typedef struct{
	SOCKET hSocket;
	WSABUF wsabuf;
	char buf[BUFFSIZE];
} PER_DATA , *PPER_DATA;

void CALLBACK WriteRouine(IN DWORD dwError,IN DWORD cbTransferred,IN LPWSAOVERLAPPED lpOverlapped,IN DWORD dwFlags);

//读取 - APC
void CALLBACK ReadRoutine(
	IN DWORD dwError,
	IN DWORD cbTransferred,
	IN LPWSAOVERLAPPED lpOverlapped,
	IN DWORD dwFlags
	){
	printf(
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值