- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Winsocket入门教程一:多线程阻塞式服务器和阻塞式客户端程序(TCP) HYPERLINK JavaScript:d=document;t=d.selection?(d.selection.type!=None?d.selection.createRange().text:):(d.getSelection?d.getSelection():);void(saveit=window.open(/storeit.aspx?t=+escape(d.title)+u=+escape(d.location.href)+c=+escape(t),saveit,scrollbars=no,width=590,height=300,left=75,top=20,status=no,resizable=yes));saveit.focus(); \o 收藏到我的网摘中,并分享给我的朋友 收藏
?? ? ?最近因为工作需要学习了Winsocket客户端服务器模型程序的设计。在学习的过程中,我发现学习Winsocket的资料不多并且十分的零散。我一直没有找到一本学习Winsocket方面的经典国外著作。而且这些资料中并没有提供源代码文件,所以我只有将这些源代码在自己敲一遍。在敲代码的过程中,我发现了这些源代码中的一些错误的地方和一些已经过时的Windows程序的输写方法(Win16?)。现将学习经验和通过阅读各种资料总结出来的模型以及代码分享出来。希望对学习Winsocket的初学者有一定的帮助。
?? ? ?我们首先来了解一下什么是Winsocket。Winsocket是unix/linux下的berkeley socket在Windows下的实现。unix/linux下的berkeley socket是网络通讯方面的基石,应用程序通过调用berkeley socket的API进行相互通讯,berkeley socket则利用具体的网络通讯协议和操作系统的调用来为我们完成具体的通讯工作。Winsocket保留了berkeley socket的所有内容,并且为了其能在Win32消息机制和多线程的环境下更好的工作。Winsocket在berkeley socket原有的基础上对其进行了扩充。如我们可以利用WSAAsyncSelect对Socket消息进行订阅,以及使用WSAGetLastError对多线程环境下的Winsocket错误进行捕获。
?? ? ? 接着再让我们来了解一下服务器\客户端应用程序模型。该模型是构建分布式系统的模型之一。服务器程序一直处于监听的状态,等待客户端程序的连接。客户端程序像服务器程序发送连接请求,服务器程序接受该连接请求,同时与客户端程序建立连接。此时客户端程序就可以向服务器发送具体的请求,获取相关的数据。服务器\客户端模型有三种连接方式,一种是面向连接的(TCP),面向连接的服务是一种可靠的服务,它通过数据流进行数据的传输,面向连接的服务实现了无差错无重复的顺寻数据发送。一种是面向无连接的(UDP),面向无连接的服务是一种不可靠的服务,它通过数据报进行数据传输,由于数据报进行传输时的顺序是无序的,所以它是不可靠的服务。最后一种是多播的方式,及服务器程序主动向多个客户端程序发送信息。面向连接的服务器\客户端应用程序模型的程序流程图如下所示:
在此模型的阻塞模式中,服务端程序在执行accept操作、客户端程序connect操作、以及服务端\客户端在进行read和write操作时,如果这些操作既没有成功也没有失败,应用程序会在执行这些操作的地方一直阻塞着。所以我们应该在服务端应用程序的主线程中不停的调用accept操作,以使服务端程序能不停地接受客户端程序发送过来的连接请求。而在接受了一个客户端的连接请求后,我们应改为每一个接受的连接请求开辟一个专门的线程来接受客户端程序发送的请求以及为具体的请求返回特定的信息。
?? ? ? ?根据以上的程序流程图以及说明,我们可以写出以下的服务端程序源代码:
HYPERLINK /shining100/archive/2010/05/09/5571644.aspx view plain HYPERLINK /shining100/archive/2010/05/09/5571644.aspx copy to clipboard HYPERLINK /shining100/archive/2010/05/09/5571644.aspx print HYPERLINK /shining100/archive/2010/05/09/5571644.aspx ?
////////////////////////////////////////////////////////
您可能关注的文档
- windowsserver2003ad域服务器的搭建资料.ppt
- windowsserver2003服务器配置跟管理项目教程资料.ppt
- windowsserver2008r2远程桌面服务的b资料.pptx
- windowsserver2008服务器配置实训教程教学作者资料.ppt
- windowsxp服务详解资料.docx
- windows服务器管理_09_ad组策略资料.ppt
- windows客户端访问linu服务器nfs资料.doc
- windows平台web服务器安全实战资料.ppt
- windows权限管理服务资料.ppt
- windows网络服务_chap04_v10资料.ppt
- wi-psz-710-zn02-01物业服务方案计划编制作业指导书资料.pdf
- wi-psz-751-kf01-01入伙服务方案计划编制作业指导书资料.pdf
- wi-psz-751-kf02-03维修服务管理作业指导书资料.pdf
- wi-psz-751-kf02-09二十四小时服务管理作业指导书资料.pdf
- wi-xc-03-02西餐厅服务基本工作规范资料.doc
- wi-xc-03-03西餐厅服务基本工作规范资料.doc
- wi-xc-03-04宴会服务规范资料.doc
- wi-xc-03-05客房送餐服务规范资料.doc
- wi-xc-03-07花店服务基本工作规范资料.doc
- wi-xc-03-08精品店服务基本工作规范资料.doc
原创力文档


文档评论(0)