没有合适的资源?快使用搜索试试~ 我知道了~
套接字模式—非阻塞模式开发(DOC文档)
4星 · 超过85%的资源 需积分: 9 46 下载量 121 浏览量
2009-09-22
09:52:33
上传
评论
收藏 294KB DOC 举报
温馨提示
试读
7页
by Koma http://blog.csdn.net/wangningyu
资源推荐
资源详情
资源评论
套接字模式—非阻塞模式开发 By Koma http://blog.csdn.net/wangningyu
套接字模式—非阻塞模式开发(1)
1、非塞模式套接字的优势和不足
由于使用非阻塞套接字在调用函数时,会经常返回 WSAEWOULDBLOCK 错误。所以在任何时
候,都应仔细检查返回代码并作好对“失败”的准备。应用程序连续不断地调用这个函数,直到它返回
成功指示为止。上面的程序清单中,在 While 循环体内不断地调用 recv()函数,以读入 1024 个字节的
数据。这种做法很浪费系统资源。
要完成这样的操作,有人使用 MSG_PEEK 标志调用 recv()函数查看缓冲区中是否有数据可读。同样,
这种方法也不好。因为该做法对系统造成的开销是很大的,并且应用程序至少要调用 recv()函数两次,
才能实际地读入数据。较好的做法是,使用套接字的“I/O 模型”来判断非阻塞套接字是否可读可写。
关于套接字的“I/O 模型”,将在后续章节中介绍。
非阻塞模式套接字与阻塞模式套接字相比,不容易使用。使用非阻塞模式套接字,需要编写更
多的代码,以便在每个 Windows Sockets API 函数调用中,对收到的 WSAEWOULDBLOCK 错误进行
处理。因此,非阻塞套接字便显得有些难于使用。
但是,非阻塞套接字在控制建立的多个连接,在数据的收发量不均,时间不定时,明显具有优
势。这种套接字在使用上存在一定难度,但只要排除了这些困难,它在功能上还是非常强大的。通
常情况下,可考虑使用套接字的“I/O 模型”,它有助于应用程序通过异步方式,同时对一个或多个套
接字的通信加以管理。
2、 程序实例——远程算术运算
本节根据第一节讲述的非阻塞模式套接字知识,实现一个可以同时为多个客户端提供服务的远程
算数运算程序。该程序分为服务器和客户端两个部分。客户端向服务器发送算术表达式,服务器
接收到表达式后,计算该表达式,并将该结果返回客户端。客户端和服务器都使用非阻塞套接字,
调用 Windows Socketd API,实现数据的发送和接收。
3、 需求分析
该程序基于 C/S 模式架构,实现客户端和服务器之间 TCP/IP 通信,完成远程算数运算。图所示,
多个客户端向服务器发送算数表达式,服务器接收到表达式之后,进行运算,然后将计算的结果
返回给客户端。
(数据包封装)
客户端实现与服务器的多次远程算数运算请求。如图所示,客户端与服务器成功连接后,多次向
服务器发送算数表达式,并接收计算结果。当客户端不再要求服务器为其计算数据时,向服务器
资源评论
- road2012-11-06里面有链接是原文的
- freetime3652012-03-30非塞模式套接字开发的word文档,里面有代码讲解,还不错的。
汪宁宇
- 粉丝: 749
- 资源: 42
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功