电子科技大学解说Word文件下载.docx
《电子科技大学解说Word文件下载.docx》由会员分享,可在线阅读,更多相关《电子科技大学解说Word文件下载.docx(64页珍藏版)》请在冰豆网上搜索。
设计地点 计算机科学与工程学院
成果形式 软件
2005 年6月 12日
IV
目 录
第一章 引 言 1
第二章 WINSOCK编程原理 2
2.1WINSOCK编程基本概念 2
2.1.1网间进程通信 2
2.1.1.1端口 2
2.1.1.2地址 3
2.1.1.3网络字节顺序 3
2.1.1.4连接、半相关、全相关 3
2.1.2Winsock服务模式 4
2.1.3客户端/服务器模式 5
2.1.4套接字类型 5
2.1.5典型套接字调用 6
2.1.5.1创建套接字——socket() 6
2.1.5.2指定本地地址——bind() 6
2.1.5.3建立套接字连接——connect()与accept() 7
2.1.5.4监听连接——listen() 8
2.1.5.5数据传输——send()与recv() 8
2.1.5.6输入/输出多路复用——select() 9
2.1.5.7关闭套接字——closesocket() 9
2.2WINDOWSSOCKET编程要点 10
2.2.1WindowsSockets的组成部分 10
2.2.2启动与终止 10
2.2.3异步选择机制 11
2.2.4异步请求函数 12
2.2.5异步数据传输 13
2.2.6阻塞处理方法 14
2.2.7出错处理 15
第三章 MFC封装WINSOCK类研究 15
3.1WINSOCKAPI的MFC封装类 15
3.2CASYNCSOCKET类 17
3.2.1重要的成员函数 17
3.2.1.1CAsyncSocket和Create成员函数 17
3.2.1.2Accept成员函数 17
3.2.1.3Bind成员函数 18
3.2.1.4Connect成员函数 18
3.2.1.5Listen成员函数 18
3.2.1.6Send成员函数 18
3.2.1.7SendTo成员函数 19
3.2.1.8Receive成员函数 19
3.2.1.9ReceiveFrom成员函数 19
3.2.1.10ShutDown成员函数 20
3.2.1.11Close成员函数 20
3.2.2消息回调函数的重载 20
3.2.2.1OnAccept函数 20
3.2.2.2OnClose函数 20
3.2.2.3OnOutOfBandData函数 21
3.2.2.4OnReceive函数 21
3.2.2.5OnSend函数 21
3.2.3CAsyncSocket类的编程模型 21
3.3CSOCKET类 22
3.3.1重要的成员函数 22
3.3.1.1CSocket和Create函数 22
3.3.1.2IsBlocking函数 22
3.3.1.3FromHandle函数 22
3.3.1.4Attach函数 22
3.3.1.5CancleBlockingCall函数 23
3.3.1.6OnMessagePending函数 23
3.3.2CSocket对象与串行化技术 23
3.3.3CSocket类编程模型 24
第四章 多人在线聊天室的分析与实现 25
4.1多人在线聊天室的功能要求和功能分析 25
4.1.1主要功能要求 25
4.1.2客户端程序主要功能分析 25
4.1.3服务器端主要功能分析 26
4.2聊天室客户端程序的设计与实现 26
4.2.1封装消息类 26
4.2.2创建客户套接字类 28
4.2.3处理套接字通信 29
4.2.3.1文档类CChatClientDoc 29
4.2.3.2初始化函数 31
4.2.3.3通信函数 33
4.2.3.4结束处理函数 35
4.2.3.5消息显示函数 36
4.2.4界面设计与编写 39
4.2.4.1模板的创建 39
4.2.4.2COnlineBar类 39
4.2.4.3COnlineList类 41
4.2.4.4在CMainFrame类中创建和显示窗口 42
4.3聊天室服务器程序设计和实现 44
4.3.1CListeningSocke类 44
4.3.2CClientSocket类 45
4.3.3通信管理类CServerDoc 46
4.4总结 51
第五章 结论 51
参考文献 52
Winsock通讯程序设计
作 者:
曹国栋 班级:
2108201016指导老师:
王忠仁
指导单位:
计算机科学与工程学院
摘要:
随着网络技术和通讯技术的发展,TCP/IP协议成为Internet事实上的工业标准。
Winsock是一套开放的、支持多种协议的、Windows平台下的网络应用编程接口,是Windows网络编程的事实标准和重要基础。
使用WinsockAPI,可以方便的实现TCP/IP通讯协议。
在现实网络通讯应用中,一种重要的模式是客户端/服务器模式(Client/Servermodel),即客户向服务器发出服务请求,服务器接收到请求后,提供相应的服务。
本文探讨了怎样使用Winsock
API实现简单的 Winsock 网络通讯应用程序设计,分别说明如何在Server端和Client端进行Socket操作,实现基于TCP/IP的数据传送,研究了MFC封装的Wicsock类,最后介绍了使用MFCWinsockAPI实现多人在线聊天室程序的方法。
关键词 WindowsSockets、网络通信编程
VI
ABSTRACT Withthedevelopofnetworkandcommunicationtechnology,TCP/IPprotocolbecomesthevirtualindustrialstandard.Winsockisasetofopen,multi-protocolsupportingnetworkapplicationprogramminginterface,itisthevirtualnetworkprogrammingstandardandimportantbasic.ItisconvenienttoaccomplishTCP/IPprotocolbyusingWinsockAPI.Inthenetworkcommunicationapplication,animportantmodelisClient/Servermodel.Thatis,ClientsendsaapplicationforservicetotheServer,WhenServerreceivestheapplication,itsupliestheproperservice.ThisarticlediscussedhowtousetheWinsockAPItoaccomplishsimpledesignofnetworkcommunicationapplication.HowtodealwiththeWindowsSocketoperationontheClientandServer.AndhowtoaccomplishdatacommunicationbasedonTCP/IP.AswellasstudyingtheMFCWinsockClasses.Inthelastpartofthisarticle,introducedthemethodtoaccomplishamulti-useron-linechatroonusingMFCWinsockAPI.
第一章 引 言
七十年代中期,美国国防部高研署(DARPA)将TCP/IP的软件提供给加利福尼亚大学Berkeley分校,TCP/IP很快被集成到UNIX中,之后,一套专门用于网络通讯开发的API出现了。
这个API就是Socket接口(套接字)。
互联网技术的逐步普及使得开发在TCP/IP协议上的应用受到日益的重视,TCP/UDP和IP等协议不能直接为用户使用,用户需要使用相应的应用编程接口去实现具体的网络应用。
不同的操作系统提供了不同的针对网络编程的接口,由于Berkeley
Sockets只能用于UNIX操作系统,它不能支持DOS和MicrosoftWindows环境,
90年代初,由Sun Microsystems、JSB Corporation、FTP
software、Microdyne以及Microsoft等几家公司共同参与制定了一套标准,即WindowsSockets1.0版规范,试图使Windows下Sockets程序设计标准化。
1993年1月,他们制定了Windows Sockets1.1版规范,定义了16位
Windows下的网络标准编程接口。
随着形势的发展,特别是32位Windows平台的发展,Windows Sockets 1.1已不能满足需要。
1994年5月,Winsock小组开始启动Winsock2规范的制定工作。
1997年5月,Winsock2的正式规范版
本2.2.1发布。
从1991年的1.0版到1997年的2.2.1版,经过不断完善并在
Intel、Microsoft、Sun、SGI、Informix、Novell等公司的全力支持下,
Winsock成为得到广泛应用的、开放的、支持多种协议的网络编程接口。
目前,在实际应用中的Windows Sockets规范主要有1.1版和2.0版。
两者的最重要区别是1.1版只支持TCP/IP协议,而2.0版可以支持多协议,2.0版有良好的向后兼容性。
已成为Windows网络编程的事实上的标准。
换言之,Windows下的Internet软件都是基于WinSock开发的。
Windows环境下进行通讯程序设计的最基本方法是应用WinSock实现进程间的通讯。
客户端/服务器模型得到了广泛的应用。
客户应用程序向服务器程序请求服务。
一个服务程序通常在一个众所周知的端口监听对服务的请求,也就是说,服务进程一直处于休眠状态,直到一个客户对这个服务的地址提出了连接请求。
在这