收藏 分销(赏)

以太网帧的封装与成帧设计.docx

上传人:胜**** 文档编号:3064029 上传时间:2024-06-14 格式:DOCX 页数:38 大小:152.87KB
下载 相关 举报
以太网帧的封装与成帧设计.docx_第1页
第1页 / 共38页
以太网帧的封装与成帧设计.docx_第2页
第2页 / 共38页
以太网帧的封装与成帧设计.docx_第3页
第3页 / 共38页
以太网帧的封装与成帧设计.docx_第4页
第4页 / 共38页
以太网帧的封装与成帧设计.docx_第5页
第5页 / 共38页
点击查看更多>>
资源描述

1、*实践教学* 兰州理工大学计算机与通信学院2015年秋季学期 计算机通信 课程设计 题 目: 以太网帧的封装与成帧设计 专业班级: 姓 名: 学 号: 指导教师: 王慧琴 成 绩: 摘要从二十世纪八十年代开始,以太网就成为最普遍采用的网络技术,它统治着世界各地的局域网和企业骨干网,并且正在向局域网发起攻击。随着万兆以太网标准的提出,以太网为征服广域网、存储和宽带领域中的新领地做好了准备。以太网帧的封装和成帧是以太网快速迅猛发展的基础。本课题根据帧的具体结构,将帧结构中目的地址源地址等与数据一起进行封装并解析,构造一个具体的Ethernet帧,通过实现帧的封装和成帧,来了解网络通信协议的基本工作

2、原理,掌握基本思路和方法。关键词: 以太网帧; 封装; 成帧; 库函数目录前言1一、基本原理21、以太网的工作原理22、 以太网帧格式的发展43、 IEEE802.3帧结构44、错检测6二、需求分析7三、系统设计与分析81、系统分析82、系统设计11以太网帧的封装12以太网帧的解析13四、系统结果15五、心得体会16六、参考文献17七、附录18前言以太网这个术语通常是指由DEC、Intel和Xerox公司在1982年联合公布的一个标准,它是当今TCP/IP采用的主要的局域网技术,它采用一种称作CSMA/CD的媒体接入方法。在TCP/IP世界中,以太网IP数据报文的封装在RFC 894中定义。1

3、976年,梅特卡夫和他的助手David Boggs发表了一篇名为以太网:局域计算机网络的分布式包交换技术的文章。1977年底,梅特卡夫和他的合作者获得了“具有冲突检测的多点数据通信系统”的专利。多点传输系统被称为CSMA/CD(带冲突检测的载波侦听多路访问),从此标志以太网的诞生。一、基本原理以太网的帧是数据链路层的封装,网络层的数据包被加上帧头和帧尾成为可以被数据链路层识别的数据帧(成帧)。虽然帧头和帧尾所用的字节数是固定不变的,但依被封装的数据包大小的不同,以太网的长度也在变化,其范围是641518字节(不算8字节的前导字)。2013年,以太网行业迎来了以太网40岁生日以及以太网标准诞生3

4、0年。以太网的速度进展一直是可预测的以10倍的增量从最初的10Mb/s到100Mb/s,到1Gb/s,再到10 Gb/s,这几乎无可争议。不过,40GbE和100GbE的同时推出有效终结了这一传统。40GbE和100 GbE的发展基于一个根本假设,即:计算与网络带宽的增长率存在相当大的差异,因此两种速度具有同时存在的必要性。在计算领域,带宽能力每24个月翻一倍,而网络应用程序则每18个月翻一倍。网络这种可预测的增长率后来同样被IEEE 802.3以太网带宽评估特别小组确认。据其预测,平均下来,到2015年,网络必须支持TB每秒的能力,到2020年,必须支持10TB每秒的能力。因此,当我们庆祝以

5、太网40岁生日的活动进入尾声时,显然会得出结论,以太网将继续向前演进,尤其是在速度提升方面。这一判断提出了许多需要思考的问题,整个行业仍需要注重达成共识,以此推进以太网向前发展。以太网采用广播机制,所有与网络连接的工作站都可以看到网络上传递的数据。通过查看包含在帧中的目标地址,确定是否进行接收或放弃。如果证明数据确实是发给自己的,工作站将会接收数据并传递给高层协议进行处理。1、以太网的工作原理 以太网采用CSMA/CD(Carrier Sense Multiple Access/Collision Detection)媒体访问机制,任何工作站都可以在任何时间访问网络。CSMA/CD的工作原理如

6、下: (1)载波监听(先听后发) 使用CSMA/CD协议时,总线上各个节点都在监听总线,即检测总线上是否有别的节点发送数据。如果发现总线是空闲的,既没有检测到有信号正在传送,即可立即发送数据;如果监听到总线忙,即检测到总线上有数据正在传送,这时节点要持续等待直到监听到总线空闲时才能将数据发送出去,或等待一个随机时间,再从新监听总线,一直到宗贤空现在发送数据。载波监听也称作先听后发。 (2)冲突检测 当两个或两个以上的节点同时监听到总线空闲,开始发送数据时,就会发生碰撞冲突;传输延迟可能会使第一个节点发送的数据还没有到达目标节点时,另一个要发送的数据的节点就已经监听到总线空闲,并开始发送数据,这

7、也会带至冲突的产生。当两个帧发生冲突时,两个传输的帧就会被破坏,被损坏帧继续传输毫无意义,而且信道无法被其他站点使用,对于有限的信道来讲,这是很大的浪费。如果每个发送节点边发送边监听,并在监听到冲突之后立即停止发送,就可以提高信道的利用率。当节点检测到纵向上发生冲突时,就立即取消传输数据,随后发送一个短的干扰信,一较强冲突信号,告诉网络上的所有的节点,总线已经发生了冲突。在阻塞信号发送后,等待一个随机事件,然后再将要发的数据发送一次。如果还有冲突,则重复监听、等待和重传操作。图6-30显示了采用CSMA/CD发送数据的工作流程。 CSMA/CD采用用户访问总线时间不确定的随机竞争方式,有结构简

8、单、轻负载时时延小等特点,但当网络通信附在增大时,由于冲突增多,网络吞吐率下降、传输演示增长,网络性能会明显下降。 从以上分析可以看出,以太网的工作方式就像没有主持人的座谈会中,所有的参会者都通过一个共同的戒指来吗相互交谈。每个参加会议的人在讲话钱,都礼貌的等到别人把话讲完。如果两个客人同时开始讲话,那么他们都停下来,分别随即等待一段时间在开始讲话,这时,如果两个客人等待的时间不同,冲突就不会出现、如果讲话超过了一次以上,将采用退避指数加强等待的时间。在以太网中,所有的节点共享传输介质。如何保证传输介质有序、高效地为许多节点提供传输服务,就是以太网的介质访问控制协议要解决的问题。帧是在数据链路

9、层数据进行传输与交换的基本单位。构造帧对于理解网络协议的概念、协议执行过程以及网络问题处理的一般方法具有重要的意义。本次课程设计的目的是应用数据链路层与介质访问控制层的知识,根据数据链路层的基本原理,通过构造一个具体的Ethernet帧,从而深入理解网络协议的基本概念与网络问题处理的一般方法。2、 以太网帧格式的发展 1980,DEC、Intel、Xerox制订了Ethernet I的标准;1982,DEC、Intel、Xerox又制订了Ehternet II的标准;1982,IEEE开始研究Ethernet的国际标准802.3;1983,迫不及待的Novell基于IEEE的802.3的原始版

10、开发了专用的Ethernet帧格式;1985,IEEE推出IEEE 802.3规范,后来为解决EthernetII与802.3帧格式的兼容问题,推出折衷的Ethernet SNAP格式。3、 IEEE802.3帧结构 数据在网络上是以很小的称为帧(Frame)的单位传输的,帧由几部分组成,不同的部分执行不同的功能。帧通过特定的称为网络驱动程序的软件进行成型,然后通过网卡发送到网线上,通过网线到达它们的目的机器,在目的机器的一端执行相反的过程。接收端机器的以太网卡捕获到这些帧,并告诉操作系统帧已到达,然后对其进行存储。“帧”数据大致由两部分组成:帧头和帧数据。帧头包括接收方主机物理地址的定位以及

11、其它网络信息。帧数据区含有一个数据体。为确保计算机能够解释数据帧中的数据,这两台计算机使用一种公用的通讯协议。互联网使用的通讯协议简称IP,即互联网协议。IP数据体由两部分组成:数据体头部和数据体的数据区。数据体头部包括IP源地址和IP目标地址,以及其它信息。数据体的数据区包括用户数据协议(UDP),传输控制协议(TCP),还有数据包的其他信息。这些数据包都含有附加的进程信息以及实际数据。866246 15004前导符目的地址源地址长度数据FCS图3.1 IEEE802.3帧结构常用的以太网MAC帧格式用两种标准,一种是DIX Ethernet V2标准(即以太网V2标准),另一种是IEEE的

12、802.3标准。这里只介绍符合IEEE802.3标准的帧,其格式如图3.1所示。它的组成比较简单,由6个字段组成。接下来对这6个部分详细介绍一下。(1)前导符:由7字节的前同步码和1字节的帧起始定界符构成。前同步码:这个字段有7个字节(56位)交替出现的1和0,它的作用就是提醒接收系统有帧的到来,以及使到来的帧与计时器进行同步。前同步码其实是在物理层添加上去的,并不是(正式的)帧的一部分。前同步码的目标是允许物理层在接收到实际的帧起始符之前检测载波,并且与接收到的帧时序达到稳定同步。帧起始定界符:这个字段用1字节(10101011)作为帧开始的信号,表示一帧的开始。最后两位是11,表示下面的字

13、段是目的地址。(2)目的地址(DA) 48位,表示帧准备发往目的站的地址,共6个字节,可以是单址(代表单个站)、多址(代表一组站)或全地址(代表局域网上的所有站)。当目的地址出现多址时,表示该帧被一组站同时接收,称为“组播”(Multicast)。目的地址出现全地址时,表示该帧被局域网上所有站同时接收,称为“广播”(Broadcast),通常以DA的最高位来判断地址的类型,若第一字节最低位为“0”则表示单址,第一字节最低位为“1”则表示组播。(3)源地址(SA)48位,表明该帧的数据是哪个网卡发的,即发送端的网卡地址。(4)该字段是“长度/类型”。当这个字段的值大于0X0600时(相当于十进制

14、的1536),就表示“类型”。这样的帧和以太网V2 MAC帧完全一样。只有当这个字段的值小于0X0600时才表示“长度”,即MAC帧的数据部分长度。(5)数据字段的最小长度必须为46字节以保证帧长至少为64字节,这意味着传输一字节信息也必须使用46字节的数据字段:如果填入该字段的信息少于46字节,该字段的其余部分也必须进行填充。数据字段的默认最大长度为1500字节。(6)帧检验序列(FCS)是32位冗余检验码(CRC),检验除前导、SFD和FCS以外的内容。当发送站发出帧时,一边发送,一边逐位进行CRC检验。最后形成一个32位CRC检验和填在帧尾FCS位置中一起在媒体上传输。接收站接收后,从D

15、A开始同样边接收边逐位进行CRC检验。最后接收站形成的检验和若与帧的检验和相同,则表示媒体上传输帧未被破坏。反之,接收站认为帧被破坏,则会通过一定的机制要求发送站重发该帧。4、错检测在校验字段中,使用的是CRC校验。校验的范围包括目的地址字段、源地址字段、长度字段、LLC数据字段。循环冗余编码(CRC)是一种重要的线性分组码、编码和解码方法,具有简单、检错和纠错能力强等特点,在通信领域广泛地用于实现差错控制。CRC校验码的检错能力很强,不仅能检查出离散错误,还能检查出突发错误。利用CRC进行检错的过程可简单描述如下:在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校验用的r位监督码(

16、CRC码),附在原始信息的后边,构成一个新的二进制码序列(共k+r位),然后发送出去。在接收端,根据信息码和CRC码之间所遵循的规则进行检验,以确定传送中是否出错。这个规则在差错控制理论中称为“生成多项式”。循环冗余校验码的特点:(1)CRC校验码可检测出所有单个错误。(2)CRC校验码可检测出所有奇数位错误。(3)CRC校验码可检测出所有双位的错误。(4)CRC校验码可检测出所有小于、等于校验位长度的突发错误。(5)CRC校验码可以的概率检测出长度为(K+1)位的突发错误。二、需求分析 1、理解以太网帧的头长度、服务类型、数据包总长度、数据包标识、分段标志、分段偏移量、生存时间、上层协议类型

17、、头校验和、源地址和目的地址等内容。 根据以太网数据包的标准格式,编写程序封装数据包并进行解析,并将解析后各包的头部与数据字段写入输入文件。数据字段的值从封装的文件中获取。2、学习Winsock技术,并利用该软件中的库函数来完成以太网帧的封装与成帧。3、通过学习以太网帧,了解帧是网络传输信息时的特定数据格式,是以太网设备用来识别数据的方式。帧有特定的格式,这样以太网设备接收到信号之后才能识别。4、初步了解以太网作为应用最为广泛的一种局域网技术的现状。5、比较系统地了解了计算机的体系结构,局域网、无线局域网,广域网、网络安全、联网设备等。计算机网络的分类与一般的事物分类方法一样,可以按事物所具有

18、的不同性质特点即事物的属性分类。计算机网络通俗地讲就是由多台计算机通过传输介质和软件物理连接在一起组成的。总的来说计算机网络的组成基本上包括:计算机、网络操作系统、传输介质以及相应的应用软件四部分。6、网络通信内同范围甚广,主要包括数据通信,网络连接以及协议三方面的内同。计算机网络技术实现了资源共享。人们可以在办公室、家里或其他任何地方,访问查询网上的任何资源,极大地提高了工作效率,促进了办公自动化、工厂自动化、家庭自动化的发展。7、21世纪已进入计算机网络时代。计算机网络极大普及,计算机应用已进入更高层次,计算机网络成了计算机行业的一部分。新一代的计算机已将网络接口集成到主板上,网络功能已嵌

19、入操作系统之中,智能大楼的兴建已经和计算机网络布线同时、同地、同方案施工。随着通信和计算机技术紧密结合和同步发展。通信技术和通信网络系统是实现智能建筑通信功能的建筑设备自动化、办公自动化的基础,通过多种通信网络子系统和相应的各种通讯技术对来自智能建筑内外的语音、数据、图像等各种信息进行接受、存储、处理、交换、传输等。三、系统设计与分析1、系统分析1)前导符前导符包括7字节的前发送码和1字节的帧起始定界符。由于这些都是固定写法,因此添加起来非常简单。对应方法如下。public static boolean appendprefix() / 前导符中前7个字节是交替出现的1和0for (int i

20、 = 0; i 7; +i) tmp.add(0XAA);/ 前导符的第8个字节是约定好的0XABtmp.add(0XAB);return true;2)目的地址及源地址我们知道,目的机器的硬件地址是通过ARP协议得到的,这需要发送ARP请求包才能得到,为了简化程序的设计,突出本次设计的要点,因此将目的地址固定写成“FF:FF:FF:FF:FF:FF”。类似地,获得本机地址也需要通过一系列的函数调用,在程序中就直接写成已知的硬件地址“74:E5:0B:7D:CE:3A”。对应方法如下。public static boolean appendaddress() / 由于未显式要求目的地址,因此程

21、序中将目的地址固定为FF:FF:FF:FF:FF:FFfor (int i = 0; i 6; +i) tmp.add(0XFF);/ 本机地址为74:E5:0B:7D:CE:3Atmp.add(0X74);tmp.add(0XE5);tmp.add(0X0B);tmp.add(0X7D);tmp.add(0XCE);tmp.add(0X3A);return true;3)长度及数据字段对于发送端来说,必须先获得数据的长度,将长度字段添加到帧中之后才能再添加数据字段,这就限定了必须访问输入文件两次,第一次用于获得文件长度,第二次用于封装帧。当然在进行CRC计算的时候有一些地方可以优化。4) 帧

22、检验序列流程图CRC流程图 帧封装的最后一步就是对数据进行校验,并将校验结果计入帧校验字段。下面举例说明在本程序中是如何实现crc-8校验算法的。设数据为10010010,crc-8的生成多项式为,即10000111。构成一个8位的寄存器crc。初始值为0,数据依次移入crc的0位,同时crc的7位移出。当移出的数据为1时,crc才和0000011进行XOR运算;移出的数据为0时,不做运算。每次crc中数据左移后就需要从输入数据中读入一位新的数据。由于左移时crc0位补0,因此当读入的数据最高位为1时还需要对crc0位进行处理(将crc与00000001异或使0位置1)。下面是伪代码:/crc

23、是一个8位的寄存器把crc中的位置为0在原始数据input后添加8个0while(数据未处理完)begin if(crc首位是1)crc左移1位crc=crc X0R 00000111elsecrc左移1位if(从input中读入的新的数据为1)将crc 0位置1end2、系统设计运行界面点击“开始-运行”键入“cdm”进入运行界面,如图所示以太网帧的封装封装帧命令流程图执行“EthernetFrame -e input”命令,输入一段信息,实现以太网帧的封装以太网帧的解析解析帧命令流程图执行“EthernetFrame -u input”命令,实现以太网帧的解析。如图所示四、系统结果 在Et

24、hernet帧的封装中,对帧的结构进行了剖析。在代码中将固定的前导码、目的地址、源地址做了设置,在调试中输入一段数据,然后进行封装。在数据段的选择上要求46B1500B之间,否则就会出现补0的现象;在Ethernet数据包解析中,我们发现当数据段长度过长时,系统会进行分段处理。它会自动分成若干的帧进行解析输出。五、心得体会帧是数据链路层最重要的概念。数据链路层属于计算机网络的低层。我们知道,两个主机之间的数据传输,总是在一段一段的链路上传送的,也就是说,在两个相邻结点之间(主机和路由器或两个路由器之间)传送数据是直接传送的(点对点)。这时就需要专门的链路层的协议。在两个相邻结点之间传送数据时,

25、数据链路层将网络层交下来的IP数据报组装成帧(framing),在两个相邻结点间的链路上“透明”地传送帧(frame)中的数据。每一帧包括数据和必要的控制信息(如同步信息、地址信息、差错控制等)。典型的帧长是几百字节到一千多字节。在接收数据时,控制信息使接收端能够知道一个帧从哪个比特开始和到哪个比特结束。这样,数据链路层收到一个帧后,就可从中提取出数据部分,上交给网络层。控制信息还使接收端能够检测到所收到的帧中有无差错。如发现有差错,数据链路层就简单地丢弃这个出现差错的帧,以免继续传送下去白白浪费网络资源。在此次的课程设计中,刚开始两天我先是收集资料,查阅了很多帧的封装的知识,对帧及其封装的方

26、法有了一定程度的了解和掌握。从最开始对帧的一个模糊的印象到对帧的结构的完全掌握,有了很大的收获,并且使帧的封装得以实现。同时,在近一周的课程设计中,我的动手能力得到了很大的提高,而且将这学期所学的网络的知识和以前所学的编程的知识充分的联系起来,对这门课的认识又提高了一层。除此之外,在做课程设计的时候也遇到了很多的问题,最后在同学的帮助下正确的解决了。从最开始的遇到问题到最后的正确解决问题,我懂得了正确出来问题的方法,也知道了自己的不足之处。此次的课程设计也是一个认识自我的好机会。六、参考文献 1谢希仁. 计算机网络. 第5版. 北京. 电子工业出版社. 2008.1.1 2唐朔飞. 计算机组成

27、原理. 第2版. 北京. 高等教育出版社. 2008.1.1 3(美)特南鲍姆,(美)韦瑟罗尔著. 严伟,潘爱民译. 计算机网络. 第5版. 北京. 清华大学出版社. 2012.3.1 4 (美)埃克尔著.陈昊鹏译. Java编程思想. 第4版. 北京. 机械工业出版社. 2007.6.1 5 杨永田.计算机通信. 哈尔滨:哈尔滨工程大学出版社,2002 6 韩毅刚.计算机通信技术. 北京市:北京航空航天大学出版社,2007 7 李鹏.计算机通信技术及其程序设计.西安: 西安电子科技大学出版社,1999.6 七、附录1、封装帧/Encap.cpp 封装帧类的实现#include #includ

28、e #include #include Encap.h#include CRC8.husing namespace std; /*/* 功能:完成前导码到源地址的四项封装/* 输入参数:fstream对象/*/void Encap:HeaderEncap(fstream& file)file.seekg(0,ios:end); /将读指针移到文件末尾for(int i=0;i7;i+) /写入B的前导码和B的帧前定界符file.put(char)0xaa);file.put(char)0xab);file.write(destination,6); /写入目的地址file.write(sour

29、ce, 6); /写入源地址/*/* 功能:处理数据字段/* 输入参数:file:fstream对象;inputstr:等待封装的字符串/*/int Encap:DataDeal(fstream& file, string inputStr)int packTotal = 0;int length = inputStr.length(); if(length = MINLENGTH) /如果输入文件长度不足B,则用0补足if (length MINLENGTH)for(int j = 0; j MINLENGTH - length; j+)inputStr += 0;cout 数据字段小于,将

30、封装成一个帧 endl;elsecout 数据字段等于,将封装成一个帧 endl;packTotal = 1;Encapsulate(file, inputStr, length); /将字符串内容写入到输出文件中cout 第个帧封装完毕! MAXLENGTH) /如果输入文件长度大于最大值packNum = length / MAXLENGTH;if (length % MAXLENGTH) /计算封帧个数packNum+;packTotal = packNum;cout 数据字段大于B,将封装成 packNum 个帧 MAXLENGTH)divideStr = leftStr.substr

31、(0,MAXLENGTH);cout divideStr endl;leftStr = leftStr.substr(MAXLENGTH,length);length = leftStr.length();Encapsulate(file, divideStr, MAXLENGTH);cout 第 packNum 个帧封装完毕! endl;packNum+;if(length MINLENGTH)for(int j = 0; j MINLENGTH - length; j+)leftStr += 0;Encapsulate(file, leftStr, length); /将剩余字符串封装,l

32、ength为字符串的真实长度,不是补足0后的长度cout leftStr endl;cout 第 packNum 个帧封装完毕! endl;packNum+;else /如果输入文件长度小于等于最大值if (MAXLENGTH= length)cout 数据字段等于B,将封装成个帧 endl;elsecout 数据字段介于B和B之间,将封装成个帧 endl;packTotal = 1;Encapsulate(file, inputStr, length); /将字符串封装cout 第 packNum 个帧封装完毕! 8;inputLength1 = length & 0xFF; file.pu

33、t(inputLength0); /将字符串长度值前八位放入inputLength0file.put(inputLength1); /后八位放入inputLength1file.write(inputChar, inputStr.length(); /inputChar可能被填充,因此它的长度不是原来的数据长度lengthunsigned char CRC8 = char(0x00); / CRC8初始化校验码int i = 0;for(i = 0; i 6; i+) / 校验目的地址、源地址checkCRC(CRC8, destinationi);for(i = 0; i 6; i+)che

34、ckCRC(CRC8, sourcei);checkCRC(CRC8, inputLength0); / 校验长度checkCRC(CRC8, inputLength1);for(i = 0; i inputStr.length(); i+) / 校验字符串checkCRC(CRC8, inputChari);checkCRC(CRC8, 0x00); / 在校验对象后加x00,校验完毕file.put(CRC8); / 将CRC8校验值封装到帧中2、解析帧/Unpack.cpp 解析帧源文件#include #include #include #include Unpack.h / 解析帧类

35、的定义#include CRC8.h / 定义了CRC8校验函数的头文件using namespace std; /*/* 功能:在input中找到一个帧/* 输入参数:file,被读取的input文件/*/void Unpack:FindFrame(fstream& file) int nFileEnd = 0; / 输入文件的长度file.seekg(0, ios:end); / 计算输入文件的长度nFileEnd = file.tellg(); file.seekg(0, ios:beg); int frameNum = 1; / 计算帧的个数,初值置为while(file.tellg(

36、) nFileEnd)for(int j = 0; j = nFileEnd) break;if(file.get() != 0xAA)j = -1;if(file.tellg() = nFileEnd)break;if(file.get() = 0xAB) / 定位帧前界定符int temp = file.tellg();if(temp + 14 nFileEnd) / 判断是否为一个完整的帧头break;else / 输出帧的序号cout endl =第 frameNum 个帧=endl;UnpackFrame(file);frameNum+;if(0 = frameNum)cout没有找

37、到合法的帧endl;file.close();/*/* 功能:对input中找到的一个帧进行解析/* 输入参数:file,被读取的input文件/*/void Unpack:UnpackFrame(fstream& file)unsigned char CRC8 = 0; / CRC8校验码初始化cout.setf(ios:uppercase); / 十六进制数以大写字母输出cout.fill(0); / 为十六进制数设置填充字符unsigned char c; / 临时变量,用于输出前导码,帧前定位符,目的、源地址cout 前导码: ; / 输出前导码,只输出,不校验c = 0xAA;for (int i = 0; i 7; i+)cout.width(2);cout hex (int)c dec ;cout endl;cout 帧前定位符: ;

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服