与协议无关的WinsockAPI编程研究

与协议无关的WinsockAPI编程研究

ID:36612783

大小:806.68 KB

页数:4页

时间:2019-05-13

与协议无关的WinsockAPI编程研究_第1页
与协议无关的WinsockAPI编程研究_第2页
与协议无关的WinsockAPI编程研究_第3页
与协议无关的WinsockAPI编程研究_第4页
资源描述:

《与协议无关的WinsockAPI编程研究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、第23卷第2期四川理工学院学报(自然科学版)Vol23No22010年4月JournalofSichuanUniversityofScience&Engineering(NaturalScienceEdition)Apr2010文章编号:16731549(2010)02017104与协议无关的WinsockAPI编程研究123蓝集明,张海燕,谭功全(1.四川理工学院计算机学院,四川自贡643000;2.四川理工学院理学院,四川自贡643000;3.四川理工学院自动化与电子信息学院,四川自贡643000)摘要:Internet正悄然无声地发生着一

2、项重大的技术革命,这就是IPv4向IPv6的逐步演进。在IPv4/IPv6过渡时期,如何开发出能够适应IPv4/IPv6过渡环境的网络应用程序,这是目前所面临的一个重要问题。本文在深刻理解纯IPv4网络编程和纯IPv6网络编程的基础上,通过比较两者的异同点,抛弃它们的差异性,吸收它们的共同点,实现了一种与协议无关的WinsockAPI编程方法,并在自行搭建的一个IPv4/IPv6过渡实验平台上,成功开发了一个与协议无关的网络聊天程序,具有很强的实际应用价值。关键词:协议无关;Winsock;IPv6;网络编程中图分类号:TP39309文献标识码:A差异。比如他们

3、在地址族、地址结构、地址转换函数、域引言名解析函数等方面都有很大的不同,这里我们就不再累IPv6必将取代IPv4,这是Internet未来发展的必然。述。本文主要关心的是如何抛开两者的差异性,找到两[56]但是,目前的Internet是基于IPv4协议的,互联网中存者的协议无关性,编写出两者兼容的网络程序。在大量的IPv4主机及各种IPv4网络设备,要想一蹴而11与协议无关的结构就地完成从IPv4到IPv6的过渡,是不现实的。为此,111sockaddr_storage结构IPv6也必将和IPv4在一段较长的时期内共存交互、和typedefstructso

4、ckaddr_storage{[12]睦相处。如何从IPv4平滑、无缝、安全地向IPv6过shortss_family;char__ss_pad1[_SS_PAD1SIZE];_渡,又如何开发能够适应这种过渡环境(同时支持IPv4_int64__ss_align;[34]和IPv6)的网络应用程序,这些都是IPv4/IPv6过渡char__ss_pad2[_SS_PAD2SIZE];时期所面临的重要问题。}SOCKADDR_STORAGE,*PSOCKADDR_STOR本文在笔者从事IPv6网络编程的过程中,总结了AGE;一些实际开发的编程经验,利用Wins

5、ock所提供的API由于用于IPv4的sockaddr_in和用于IPv6的sock函数,实现了与协议无关的网络编程,并附了一个简单addr_in6具有不同的结构和长度,所以不能用struct的开发实例。sockaddr来为sockaddr_in和sockaddr_in6静态分配存储空间,而要用sockaddr_storage结构来实现。该结构定1与协议无关的编程接口义了足够大的地址空间,用来容纳相应的地址信息,而[7]众所周知,IPv4地址采用的是32比特编址,书写格且它和structsockaddr结构是同构的。在实际编程时式常用点分十进制数来表示,而IPv

6、6地址采用的是128我们只需要为它的成员ss_family指定具体的地址族取比特编址,书写格式常用冒号十六进制数来表示,这就值便可根据此值确定要处理的地址结构类型,既适用于决定了IPv4与IPv6的socket编程接口必然会存在一些IPv4也适用于IPv6。收稿日期:20091128基金项目:人工智能四川省(高校)重点实验室科研基金项目(2008RK012)作者简介:蓝集明(1973),男,四川自贡人,讲师,硕士,主要从事计算机网络技术方面的研究。172四川理工学院学报(自然科学版)2010年4月112addrinfo结构_out

7、charFAR*serv,__inDWORDservlen,__inintstructaddrinfo{flags);该函数实现对sockaddr地址结构的解析,得到相intai_flags;/*地址信息标志*/intai_family;/应的主机名和服务名。在此不再详述。*地址族*/intai_socktype;/*Socket类型*/intai_(3)freeaddrinfo函数:原型是voidfreeaddrinfo(__inprotoco;l/*协议类型*/size_tai_addrlen;/*socketstructaddrinfo*ai);该函数用来释

8、放参数ai

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。