网络编程基础实(总).doc

  1. 1、本文档共44页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)说明

文档评论(0)

xpb717 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档