`
zha_zi
  • 浏览: 592631 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

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中会存在有一定数量的满足条件的集合

分享到:
评论

相关推荐

    vc++网络编程 vc++网络编程

    另外,也可以使用异步套接字编程,通过`select`、`WSAPoll`或I/O完成端口(IOCP)来实现非阻塞的网络通信。 六、高级主题 除了基本的网络编程,还可以深入学习套接字选项、SSL/TLS安全通信、多播、网络时间同步、...

    vc++网络编程电子书

    在本书中,作者深入浅出地介绍了网络编程的各个方面,包括TCP/IP协议、套接字编程、多线程技术以及异步I/O模型等核心主题。 首先,书中详细讲解了网络通信的基础,如TCP/IP协议栈的工作原理,涵盖了IP地址、端口号...

    vc++网络编程教程

    6. **异步编程**:讲述如何利用IOCP(I/O完成端口)或Windows套接字API的异步功能,实现高效非阻塞的网络编程。 7. **实战案例**:提供实际的项目示例,如简单的HTTP服务器、FTP客户端等,让学习者将理论知识应用于...

    VC++网络编程资料

    为了提高效率,网络编程中常常使用异步I/O模型,如IOCP(I/O完成端口)或者Windows套接字2的WSAAsyncSelect和WSAEventSelect。这些机制允许在接收和发送数据时不必阻塞主线程,提高了程序的响应性。 6. **异常处理...

    vc++ 网络编程【资料大全】.rar

    5. **异步I/O模型**:为提高效率,网络编程常采用异步模型,如IOCP(I/O完成端口)。VC++的`WSAAsyncSelect`和`WSAEventSelect`允许开发人员在特定事件发生时(如数据到达)触发回调函数,从而避免阻塞等待。 6. **...

    VC++网络编程--局域网下载系统的实现

    Winsock分别提供了“套接字模式”和“套接字I/O模型”,可对一个套接字上的I/O行为加以控制。注意:“套接字模式”和“套接字I/O模型”是无关的,套接字模型的出现是为了解决套接字模式存在的某些限制。 Winsock...

    VC++网络编程

    总的来说,VC++网络编程,尤其是TCP/IP方向,要求开发者具备扎实的网络基础,熟悉Winsock API或MFC网络编程库,并能处理各种网络异常情况。掌握这项技能不仅有助于进入大公司,也是提升个人技术水平的关键。在实际...

    VC++网络编程的好资料代码

    首先,VC++网络编程涉及到的主要库是Winsock,这是Microsoft提供的一个接口,用于实现Berkeley套接字API,使得开发者可以进行TCP/IP通信。在VC++环境中,使用Winsock需要包含头文件`winsock2.h`和`ws2tcpip.h`,并...

    VC++(MFC)C/S版本简易QQ聊天工具

    2. **网络通信**:虽然MFC本身并不直接支持网络编程,但可以通过Winsock(Windows套接字)API来实现网络通信。Winsock是Windows操作系统中的一个接口,允许程序通过TCP/IP协议访问网络。开发者需要手动封装Winsock的...

    VC++ 网络编程程序汇总

    - **异步IO模型**:Windows提供了异步套接字API,如`WSAAsyncSelect()`和`WSAEventSelect()`,允许在等待I/O操作完成时执行其他任务。 5. **错误处理和调试** - **错误码**:Winsock API调用失败会返回错误码,如...

    VC++高级网络编程源码

    源码中的例子可能包括了使用Winsock进行基本的TCP和UDP通信、套接字编程、多线程处理网络请求、异步I/O操作、服务器客户端模型的构建等多个方面。通过这些实例,你可以学习到如何创建和绑定套接字、监听连接、接受...

    《VC++网络通信编程实例案例精选》源代码 第二部分

    书中可能讨论了异步I/O、事件驱动编程或select/poll/epoll等模型,这些都是提高服务器处理能力的有效手段。 数据打包与解包是网络通信中不可或缺的部分。为了在网络上传输,数据通常需要转换为特定格式。书中可能会...

    VC++网络通信编程实例

    5. **异步I/O**:为了解决阻塞I/O可能导致的效率问题,可以使用异步I/O模型。VC++的WSAAsyncSelect或WSAEventSelect函数可以实现异步套接字操作,使得程序在等待网络事件时能继续执行其他任务。 6. **错误处理**:...

    VC++网络编程基本技术

    **VC++网络编程基本技术** 在Windows环境下进行网络编程,Visual C++(VC++)提供了一套强大的工具,包括基础的Socket API以及基于MFC(Microsoft Foundation Classes)的CAsyncSocket和CSocket类。这些技术使得...

    VC++网络通信编程实例案例精选

    - 异步I/O:利用Winsock的异步模型,提高并发性能和响应速度。 通过这些实例,开发者可以学习到如何处理错误,优化性能,以及如何使用套接字选项等高级特性。此外,还可以了解如何与其他编程语言或平台进行交互,...

    VC++网络编程+部分例子

    《VC++网络编程+部分例子》是一份针对VC++编程者深入学习网络编程的重要资源,包含了一系列实用的示例代码。这份资料的核心是利用Microsoft Visual C++(VC++)开发环境进行网络通信程序的设计和实现。网络编程是...

    VC++网络编程代码,学习网络编程的好资料

    在IT领域,网络编程是构建分布式系统和互联网应用程序的基础,而VC++(Microsoft Visual C++)作为一款强大的C++集成开发环境,提供了丰富的库支持进行网络编程。本资源集合是一份针对VC++网络编程的学习资料,它...

Global site tag (gtag.js) - Google Analytics