- 1、本文档共44页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Winsock网络编程
网络应用程序是由通信进程对组成的,每对互相通信的应用程序进程互相发送报文,它们之间的通信必须通过下层的网络来进行。为了将应用程序和底层的网络通信协议屏蔽开来,采用抽象概念--套接字(Socket)来作为应用程序和底层网络之间的应用程序编程接口(API)。
为了惟一地标识通信对等方的通信进程,套接字必须包含两种信息:(1)通信对等方的网络地址;(2)通信对等方的进程编号,通常称为端口号。
Windows Sockets是在Windows环境下使用的一套网络编程规范,简称为Winsock,它来源于“Berkeley Socket”。Sockets本来是Unix操作系统下流行的一种网络编程接口(API),它是1983年在Berkeley(加州大学伯克利分校)4.2 BSD操作系统中被首先引入的,因此被称为“Berkeley Socket API”。Winsock API函数的分三类:
(1)与BSD Socket(用在Unix中)相兼容的基本函数;
(2)网络数据信息检索函数;
(3)Windows专用扩展函数三类。
Winsock规范的核心内容是符合Berkeley Socket风格的库函数。Windows的扩展部分为应用程序开发者提供了开发Windows应用软件的功能,它有利于程序员写出更加稳定并且更加高效的程序。另外,除了WSAStartup( )和WSACleanup( )两个函数外,其他Windows扩展函数的使用不是强制性的。
Winsock是通过动态链接库的方式提供给软件开发者的,而且从Windows 95以后已经被集成到了Windows操作系统之中。Winsock同时包括了16位和32位的编程接口,16位的Windows Socket 2应用程序使用的动链接库是WINSOCK.DLL,而32位的使用WSOCK32.DLL(Winsock1.1版)和WS2_32.DLL(Winsock2.0版)。在编程时,使用Winsock API时要包含头文件winsock.h(Winsock1.1版)或winsock2.h(Winsock2.0版)。这里Winsock1.1和Winsock2.0是Winsock的两个主要版本,Winsock2.0是Winsock1.1的扩展,它向下完全兼容。
有关Winsock的内容及其库函数请参见相关的资料。
TCP/IP的传输层可以使用传输控制协议(TCP)来封装数据,也可以使用用户数据报协议(UDP)来封装数据。TCP 协议面向连接,使用字节流传送服务,是可靠的;而UDP 协议面向非连接,使用数据报服务,是非可靠的。TCP 协议提供高可靠性的传输,UDP 协议提供高效的传输。在实际应用中,它们有其各自所适应的场合。
在面向连接的 Client/Server 结构中:服务器首先启动,通过调用socket( )建立一个套接口,然后调用bind()将该套接口和本地网络地址联系在一起,再调用listen( )使套接口做好侦听的准备,并规定它的请求队列的长度,之后就调用accept( )来接收连接。客户在建立套接口后就可调用connect( )和服务器建立连接。连接一旦建立,客户机和服务器之间就可以通过调用read( )和write( )来发送和接收数据。最后,待数据传送结束后,双方调用close( )关闭套接口。
在无连接的 Client/Server 结构中,服务器使用socket( )和bind( )函数调用建立和连接socket。由于此时的socket 是无连接的,服务器使用recvfrom( )函数从socket 接收数据。客户端也只调用bind( )函数而不调用connect( )函数。注意:无连接的协议不在两个端口之间建立点到点的连接,因此sendto( )函数要求程序在一个参数中指明目的地址。recvfrom( )函数不需要建立连接,它对到达相连协议端口的任何数据作出响应。当recvfrom( )函数从socket 收到一个数据报时,它将保存发送此数据包的进程的网络地址以及数据包本身。程序(服务器和客户)用保存的地址去确定发送(客户)进程。在必要的条件下,服务器将其应答数据报送到从recvfrom( )函数调用中所得到的网络地址中去。
基于TCP和UDP的服务器端程序和客户端程序工作的流程分别见下图。
请查阅相关资料,并回答下列任务。
(1)给出程序详细的流程图和对程序关键函数的详细说明。
(2)使用 Winsock API 开发通信程序中的客户端程序和服务器程序时,各需要哪些不同的函数。
(3)解释 connect()、bind()等函数中struct sockaddr *addr 参数各个部分的含义,并用具体的数据举例说明。
(4)说明
您可能关注的文档
- 〈新〉算法和数据结构.doc
- 〈新〉算法与数据结构课程设计指导2011秋(信息).doc
- 〈新〉索马里的地理.doc
- 〈新〉谈谈关于谈谈关于我国反垄断法的立法目的的应用.doc
- 〈新〉谈谈现在分词的用法.doc
- 〈新〉谈新课程实施的策略.doc
- 〈新〉讨论修改版-网络工程学院创新实践学分的管理规定0514定.doc
- 〈新〉腾飞--华北制药.ppt
- 〈新〉调版%2B吕必松《对外汉语教学概论》01.doc
- 〈新〉调试技术与异常处理.doc
- 《中国通史》文字稿第12集春秋争霸.docx
- java教程--类与对象-讲义课件(演讲稿).ppt
- Vue应用程序开发-(1).pptx
- 东北师大版社劳动实践与评价指导手册一年级上册主题二活动一寻找五彩的树叶课时课件.pptx
- 外研版英语四年级上册 Module 4 Unit 2 How much is it单元教学设计.docx
- 外研版英语四年级上册Module 4 单元整体教学设计.docx
- 6《上课之前》课件 鄂科技版 心理健康教育一年级.pptx
- 《1~5的认识》说课课件(共25张PPT)人教版一年级上册数学.pptx
- 六《解决问题(1)》说课课件 人教版 三年级上册数学.pptx
- 七《解决问题》说课课件 人教版 二年级上册数学.pptx
文档评论(0)