- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言实的串行通信接口程序 _计算机论文.doc
C语言实的串行通信接口程序 _计算机论文
C语言实的串行通信接口程序 _计算机论文
摘 要 该文介绍了sockets通信原理,从程序员角度着重讨论了windows sockets为支持异步通信对sockets的功能扩充,并给出了应用windows sockets实现网络实时通信的一个程序实例。关
ibm公司于1994年4月推出的tcp/ip for dos v2.1.1所提供的开发软件包programmers tool kit不仅带有dos下网络编程接口,而且提供了windows下网络异步通信接口winsock。
一、socket网络编程原理socket是bsd unix提供的网络应用编程接口,它采用客户机/服务器的通信机制,使网络客户机方和服务器方通过socket实现网络之间的连接和数据交换。socket提供了一系列的系统调用,使用这些系统调用可以实现tcp、udp、icmp和ip等多种网络协议之间的通信。
socket有三种主要类型:stream sockets,datagram sockets和raw sockets。streamsocket接口定义了一种可靠的面向连接的服务,它实现了无差错无重复的顺序数据传输。它通过内置的流量控制解决了数据的拥塞,应用程序可以发送任意长度的数据,将数据当作字节流。datagram socket接口定义了一种无连接的服务,数据通过相互独立的包进行传输,包的传输是无序的,并且不保证是否出错、丢失和重复。包长度是有限的(隐含长度为8192字节,最大长度可设为32768字节)。raw socket接口允许对低层协议如ip和icmp的直接存取,它主要用于新的网络协议实现的测试等。
下面我们通过一个面向连接的传输发生的典型情况来说明socket网络通信的实现。
由图我们可以看出,客户机和服务器的关系不是对称的。服务器首先启动,然后在某一时间启动客户机与服务器建立连接。服务器和客户机开始都必须用调用socket ()建立一个套接字(socket),然后服务器调用bind()将套接字与一个本地网络地址捆扎在一起,再用调用listen()使套接字处于一种被动的准备接收状态,同时规定它的请求队列长度,之后服务器就可以调用accept()来接收连接了。客户机在建立套接字之后,便可以通过调用connect()和服务器建立连接。连接建立后,客户机和服务器之间就可以通过连接发送和接收数据(调用read()和write())。最后,待数据传送结束,双方调用close()关闭套接字。
@@t8s10700.gif面向连接的协议实现的socket调用图@@
二、winsock对socket的扩充
bsd socket支持阻塞(blocking)和非阻塞(non-blocking)两种工作方式。在阻塞方式下,connect()、accept()、read()和recv()等调用在执行时都处于阻塞状态直到它成功或出错返回。在非阻塞方式下,这些调用是立即返回的,但是它们是否完成得靠查询才能知道。对于windows这种非抢先多任务操作系统来说,这两种工作方式都是难以接受的,为此,winsock在尽量与bsd socket保持一致的前提下,又对它作了必要的扩充。
winsock对bsd socket的扩充主要是在基于消息、对网络事件的异步存取接口上。表1列出了winsock扩充的函数功能。
从表1可以看出,winsock的扩充功能可以分为如下几类。
(1)异步选择机制
异步选择函数wsaasyncselect()允许应用程序提名一个或多个感兴趣的网络事件,所有非阻塞的网络i/o例程(如send()和resv()),不管它是已经使用还是即将使用,都可作为wsaasyncselect()函数选择的候选。当被提名的网络事件发生时,windows应用程序的窗口函数将收到一个消息,消息附带的参数指示被提名过的某一网络事件。
@@t8s10701.gif表1 winsock扩充函数功能@@
(2)异步请求例程
异步请求例程允许应用程序用异步方式获取请求的信息,如wsaasyncgetxbyy()类函数允许用户请求异步服务,这些功能在使用标准berkeley函数时是阻塞的。函数wsacancelasyncrequest()允许用户终止一个正在执行的异步请求。
(3)阻塞处理方法
winsock在调用处于阻塞时进入一个叫“hook”的例程,它负责处理windows消息,使得windows的消息循环能够继续。winsock还提供了两个函数(wsasetblockinghook()和wsaunhookblockinghook())让用户能够设置和取消自己的阻塞处理例程。另外,函数wsaisblocking()可以检测调用是否阻塞,函数wsacanc
您可能关注的文档
- (信息化教育电子绩效支持系统ITEEPSS)的设计与实现_计算机论文.doc
- .Net平台下并行工程项目规划与团队组织系统的设计与实现_计算机论文.doc
- 08-16SP4MF型捣固车操作概述_电子机械论文.doc
- 10t半沸腾锅炉烟尘高效处理技术_工程建筑论文.doc
- 1992lxm工业蒸汽锅炉的自动化控制过程与实现_工程建筑论文.doc
- 2011年中国企业计算需求展望虚拟化-客户端计算与云计算_计算机网络论文.doc
- 214线退化性多年冻土地区试验路设计_工程建筑论文.doc
- 21世纪中国医院信息化及其对策_计算机论文.doc
- 21世纪制冷空调行业绿色环保制冷剂的趋势与展望_工程建筑论文.doc
- 21世纪岩土工程发展展望_工程建筑论文.doc
- DB与DBB交易方式下工程项目绩效比较研究_工程建筑论文.doc
- Delphi 7.0常用函数速查手册_计算机论文.doc
- Delphi 中动态链接库(DLL)的建立和使用_计算机论文.doc
- Delphi常用应用函数_计算机论文.doc
- DeST 应用与发展_工程建筑论文.doc
- DeST在空调设备性能检证(Commissioning)上的应用_工程建筑论文.doc
- DES算法实现过程分析_计算机论文.doc
- Development of On-line Information Dissemination for Distance Learning in Bangladesh _计算机网络论文.doc
- Director与Flash在多媒体系统开发中的差异分析 _计算机论文.doc
- DOS下DSP播音的编程 _计算机论文.doc
文档评论(0)