VC++网络编程 WINSOCK I/O模型

         window 下的套接字以来两种方式执行I/O操作,阻塞IO 非阻塞IO,一般默认使用的是阻塞IO 即线程会等待不会把控制权利立刻返回给程序,这就意为一个线程在某一个时候只能够去执行一个IO操作。如果服务端想和多个客户端同时进行通信的话就要使用多线程编程,但是会增加开销,如果采用非阻塞IO程序不会等待,会立刻返回结果但是在大部分情况下返回的结果是错误的,并返回一个WSAEWOULDBLOCK的错误,所以程序员要不断的检测函数返回的代码以判断一个套接字何时可供读写,为了避免麻烦

         winsock 提供了不同的套接字模型对IO进行管理 select (),WSAAsyncSelect(),WSAEventSelect(),Overlapped(),

select() 模型是winsock 中最常见的IO模型,通过调用select函数可以确定一个或者多个套接字的状态,判断套接字上是否存在数据,或者能否向一个套接字写入数据,它技能防止应用程序在套接字处于阻塞模式时候在一次IO操作被阻塞,同时也防止套接字处于非锁定模式中产生WSAEWOULDBLOCK错误select函数原型、

int select(int nfds,fd_set* readfds,fd_set*writefds,fd_set* exceptfds,const struct timeeval*timeout)

         nfds 是伯克利套接的兼容,基本没有作用,readfds writefds exceptfds 分别是可以读的可以写入的,发生异常的一组集合fd_set,在fd_set中会存在有一定数量的满足条件的集合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值