基于Windows的网络编程研究.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Windows的网络编程研究.doc

基于Windows的网络编程研究 1.基本概念的清晰 ①网络编程: 通过使用套接字来达到进程间通信目的编程就是网络编程。windows提供的基于网络编程的就是套接字也就是winsock 在使用Winsock API编写网络应用程序时,要使用大量系统已经实现的网络 功能函数,在调用任何一个Winsock API函数之前,都必须先检查协议栈的安装情况,也就是检查系统中是否有Windows Socket的实现库。通过调用WSAStartup函数便可以检测系统中有没有一个或多个Windows Socket 的实现。这个函数是进行网络编程的过程当中首先需要调用的函数,接下来才可以进一步的调用其他的API函数。 1.函数格式:int WSAStartup(WORD wVersionRequested,LPWSADATA lpWSAData); 2.函数参数说明: ?wVersionRequested:第一个参数是一个双字节型数据,它指定将要在程序中要使用的Winsock版本号。一般如果要加载Winsock 2.2版本,则可以通过MAKEWORD(2,2);实现。 ?lpWSAData:是一个指向WSADATA结构的指针,当该函数被调用的时候,它将返回关于Windows Socket 实现的详细信息。可用于相关信息的返回与查询。 ②创建套接口(Socket): 应用程序在使用套接口进行通信之前,必须要有一个套接口。在Winsock中一般使用Socket()函数来实现一个网络应用程序的套接口。 1.函数格式:SOCKET socket(int af,int type,int protocol); 2.函数参数说明: ?af:说明套接口要使用的协议地址族(指一系列的互联网协议),如果想建立一个UDP/TCP套接口,只能用常量AF_INET,表示使用互联网协议(IP)地址。 ?type:描述套接口的协议类型。当第一个参数af是AF_INET的时候,他只能使用SOCK_STREAM、SOCK_DGRAM或SOCK_RAW中的任意一个。 ?protocol:说明该套接口使用的是特定协议。当以上两个参数确定以后,协议字段可以使用的值是限定的。如果不希望使用特定的协议,那么这一项可以设为0,系统就会根据前面的设置自动确定一个协议字段的取值。 ③地址绑定(bind) 当使用socket()函数创建了一个套接口后,该套接口是还不能直接使用的,因为他只存在于一个名字空间中,也就是说它只是确定了通信所希望使用的服务类型,并没有与该主机上提供服务的某个段口联系在一起,bind()函数通过给一个未命名的套接口分配一个本地名字莱维套接口创建本地绑定(就是把一个套接口与一个主机地址和端口号联系起来),本函数适用于数据包或者流类太接口。 1.函数格式:int bind(SOCKET s,const struct sockaddr FAR* name,int namelen); 2.函数参数说明: ?s:标识一个未绑定套接口的描述字,它是socket()函数调用成功时返回的值。 ?name:是一个与指定协议有关的地址结构指针,它指向的值是赋予套接口的地址信息。在Winsock中使用sockaddr_in结构指定IP地址和端口信息,它的定义如下: struct sockaddr_in{ short sin_family; u_short sin_port; struct in_addr sin_addr; char sin_zero[8] } 这四个字段的含义如下: sin_family:该字段必须为AF_INET,以告诉Winsock所使用的IP地址族。 sin_port:它是以网络字节顺序表示的16位端口号。 sin_addr:它是以网络字节顺序表示的32位IP地址。 sin_zero:该字段不用,填充为0。 3.函数返回值: 成功的话,返回0,否则返回SOCKET_ERROR。 ④服务器端监听连接(listen) 在一个服务器端程序中,用socket()函数成功创建了一个套接口,并且用bing()函数和一个指定的地址绑定起来,就要指示该套接口进入监听连接请求状态,可以接收由客户端发出的连接请求,这时候就要用Winsock API函数listen()。 1.函数格式:int listen(SOCKET s,int backlog); 2.函数参数说明: ?s:用于标识一个已绑定了地址,但还未建立连接的套接口描述字。 ?backlog:这个参数指定了正在等待连接的最大队列长度。需要设

您可能关注的文档

文档评论(0)

docinpfd + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:5212202040000002

1亿VIP精品文档

相关文档