RTSP协议学习笔记(学习流媒体的时候自己总结的)

时间:2019-05-15 09:49:27下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《RTSP协议学习笔记(学习流媒体的时候自己总结的)》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《RTSP协议学习笔记(学习流媒体的时候自己总结的)》。

第一篇:RTSP协议学习笔记(学习流媒体的时候自己总结的)

RTSP协议学习笔记

目录

RTSP协议学习笔记..........................................................................................................1 第一部分:RTSP协议..................................................................................................2

一、RTSP协议概述.....................................................................................2二、三、1.2.3.4.RTSP协议与HTTP协议区别................................................................2 RTSP重要术语.....................................................................................3 集合控制(Aggregate control):............................................................3 实体(Entity):.......................................................................................3 容器文件(Container file):..............................................................3 RTSP会话(RTSP session):..................................................................3

四、RTSP请求消息.....................................................................................3 1.消息格式:..............................................................................................3

五、RTSP回应消息.....................................................................................4 1.消息格式:..............................................................................................4

六、RTSP 重要方法....................................................................................4 1.OPTIONS:...................................................................................................4 2.DESCRIBE:..............................................................................................5 3.SETUP:....................................................................................................6 4.PLAY:......................................................................................................7 5.PAUSE:....................................................................................................8 6.TEARDOWN:...........................................................................................8

七、1.2.RTSP重要头字段参数..........................................................................9 Accept:....................................................................................................9 Bandwidth:...............................................................................................9 3.CSeq:........................................................................................................9 4.Rang:........................................................................................................9 5.Session:...................................................................................................9 6.Transport:.................................................................................................9

八、简单的RTSP消息交互过程................................................................10 1.第一步:查询服务器端可用方法............................................................10 2.3.4.5.6.一、二、三、一、第二步:得到媒体描述信息...................................................................10 第三步:建立RTSP会话........................................................................10 第四步:请求开始传送数据...................................................................10 第五步: 数据传送播放中.....................................................................10 第六步:关闭会话,退出.......................................................................10 SDP协议概述.....................................................................................11 SDP格式............................................................................................11 SDP示例...........................................................................................12 MMS协议概述...................................................................................13 第二部分:SDP协议..................................................................................................11 第三部分:MMS协议................................................................................................13

第一部分:RTSP协议

一、RTSP协议概述

RTSP(Real-Time Stream Protocol)是一种基于文本的应用层协议,在语法及一些消息参数等方面,RTSP协议与HTTP协议类似。

RTSP被用于建立的控制媒体流的传输,它为多媒体服务扮演“网络远程控制”的角色。尽管有时可以把RTSP控制信息和媒体数据流交织在一起传送,但一般情况RTSP本身并不用于转送媒体流数据。媒体数据的传送可通过RTP/RTCP等协议来完成。

一次基本的RTSP操作过程是:首先,客户端连接到流服务器并发送一个RTSP描述命令(DESCRIBE)。流服务器通过一个SDP描述来进行反馈,反馈信息包括流数量、媒体类型等信息。客户端再分析该SDP描述,并为会话中的每一个流发送一个RTSP建立命令(SETUP),RTSP建立命令告诉服务器客户端用于接收媒体数据的端口。流媒体连接建立完成后,客户端发送一个播放命令(PLAY),服务器就开始在UDP上传送媒体流(RTP包)到客户端。在播放过程中客户端还可以向服务器发送命令来控制快进、快退和暂停等。最后,客户端可发送一个终止命令(TERADOWN)来结束流媒体会话

二、RTSP协议与HTTP协议区别

1.RTSP引入了几种新的方法,比如DESCRIBE、PLAY、SETUP 等,并且有不同的协议标识符,RTSP为rtsp 1.0,HTTP为http 1.1;

2.HTTP是无状态的协议,而RTSP为每个会话保持状态;

3.RTSP协议的客户端和服务器端都可以发送Request请求,而在HTTPF 协议中,只有客户端能发送Request请求。

4.在RTSP协议中,载荷数据一般是通过带外方式来传送的(除了交织的情况),及通过RTP协议在不同的通道中来传送载荷数据。而HTTP协议的载荷数据都是通过带内方式传送的,比如请求的网页数据是在回应的消息体中携带的。

5.使用ISO 10646(UTF-8)而不是ISO 8859-1,以配合当前HTML的国际化; 6.RTSP使用URI请求时包含绝对URI。而由于历史原因造成的向后兼容性问题,HTTP/1.1只在请求中包含绝对路径,把主机名放入单独的标题域中;

三、RTSP重要术语

1.集合控制(Aggregate control):

对多个流的同时控制。对音频/视频来讲,客户端仅需发送一条播放或者暂停消息就可同时控制音频流和视频流。

2.实体(Entity):

作为请求或者回应的有效负荷传输的信息。由以实体标题域(entity-header field)形式存在的元信息和以实体主体(entity body)形式存在的内容组成

3.容器文件(Container file):

可以容纳多个媒体流的文件。RTSP服务器可以为这些容器文件提供集合控制。

4.RTSP会话(RTSP session):

RTSP交互的全过程。对一个电影的观看过程,会话(session)包括由客户端建立媒体流传输机制(SETUP),使用播放(PLAY)或录制(RECORD)开始传送流,用停止(TEARDOWN)关闭流。

四、RTSP请求消息

1.消息格式:

方法 URI RTSP版本 CR LF 消息头 CR LF CR LF 消息体 CR LF

其中方法包括OPIONS、DESCRIBE、SETUP、PLAY、TEARDOWN等,URI是接受方的地址,例如:rtsp://192.168.0.1/video1.3gp。

RTSP版本一般都是 RTSP/1.0。每行后面的CR LF表示回车换行,需要接受端有相应的解析,最后一个消息头需要有两个CR LF 消息体是可选的,有的Request消息并不带消息体。

五、RTSP回应消息

1.消息格式:

RTSP版本 状态码 解释 CR LF 消息头 CR LF CR LF 消息体 CR LF 其中RTSP版本一般都是RTSP/1.0,状态码是一个数值,用于表示Request消息的执行结果,比如200表示成功,解释是与状态码对应的文本解释.六、RTSP 重要方法

1.OPTIONS:

用于得到服务器提供的可用方法; 如: OPTIONS rtsp://192.168.20.136:5000/xxx666 RTSP/1.0 CSeq: 1 服务器的回应信息会在Public字段列出提供的方法。如: RTSP/1.0 200 OK CSeq: 1 //每个回应消息的cseq数值和请求消息的cseq相对应 Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE 2.DESCRIBE:

客户端向服务器端发送DESCRIBE,用于得到URI所指定的媒体描述信息,一般是SDP信息。客户端通过Accept头指定客户端可以接受的媒体述信息类型。

如:

C->S: DESCRIBE rtsp://server.example.com/fizzle/foo RTSP/1.0 CSeq: 312 Accept: application/sdp, application/rtsl, application/mheg)服务器回应URI指定媒体的描述信息: 如: S->C: RTSP/1.0 200 OK CSeq: 312 Date: 23 Jan 1997 15:35:06 GMT Content-Type: application/sdp //表示回应为SDP信息 Content-Length: 376 //这里为一个空行 //以下为具体的SDP信息 v=0 o=mhandley 2890844526 2890842807 IN IP4 126.16.64.4 s=SDP Seminar i=A Seminar on the session description protocol u=http://www.xiexiebang.com/foo/bar/baz.rm RTSP/1.0 CSeq: 302 Transport: RTP/AVP;unicast;client_port=4588-4589 服务器端对SETUP Request产生一个Session Identifiers。如: S->C: RTSP/1.0 200 OK CSeq: 302 Date: 23 Jan 1997 15:35:06 GMT Session: 47112344 //产生一个Session ID Transport: RTP/AVP;unicast;client_port=4588-4589;server_port=6256-6257

4.PLAY:

PLAY方法告知服务器通过SETUP中指定的机制开始发送数据。在尚未收到SETUP请求的成功应答之前,客户端不可以发出PLAY请求。

PLAY请求将正常播放时间(normal play time)定位到指定范围的起始处,并且传输数据流直到播放范围结束。PLAY请求可能被管道化(pipelined),即放入队列中(queued);服务器必须将PLAY请求放到队列中有序执行。也就是说,后一个PLAY请求需要等待前一个PLAY请求完成才能得到执行。

比如,在下例中,不管到达的两个PLAY请求之间有多紧凑,服务器首先play第10到15秒,然后立即第20到25秒,最后是第30秒直到结束。

C->S: PLAY rtsp://audio.example.com/audio RTSP/1.0 CSeq: 835 Session: 12345678 Range: npt=10-15 C->S: PLAY rtsp://audio.example.com/audio RTSP/1.0 CSeq: 836 Session: 12345678 Range: npt=20-25 C->S: PLAY rtsp://audio.example.com/audio RTSP/1.0 CSeq: 837 Session: 12345678 Range: npt=30-

Range头可能包含一个时间参数。该参数以UTC格式指定了播放开始的时间。如果在这个指定时间后收到消息,那么播放立即开始。时间参数可能用来帮助同步从不同数据源获取的数据流。

不含Range头的PLAY请求也是合法的。它从媒体流开头开始播放,直到媒体流被暂停。如果媒体流通过PAUSE暂停,媒体流传输将在暂停点(the pause point)重新开始。

如果媒体流正在播放,那么这样一个PLAY请求将不起更多的作用,只是客户端可以用此来测试服务器是否存活。

5.PAUSE:

PAUSE请求引起媒体流传输的暂时中断。如果请求URL中指定了具体的媒体流,那么只有该媒体流的播放和记录被暂停(halt)。比如,指定暂停音频,播放将会无声。如果请求URL指定了一组流,那么在该组中的所有流的传输将被暂停。如:

C->S: PAUSE rtsp://example.com/fizzle/foo RTSP/1.0 CSeq: 834 Session: 12345678 S->C: RTSP/1.0 200 OK CSeq: 834 Date: 23 Jan 1997 15:35:06 GMT

PAUSE请求中可能包含一个Range头用来指定何时媒体流暂停,我们称这个时刻为暂停点(pause point)。该头必须包含一个精确的值,而不是一个时间范围。媒体流的正常播放时间设置成暂停点。当服务器遇到在任何当前挂起(pending)的PLAY请求中指定的时间点后,暂停请求生效。如果Range头指定了一个时间超出了任何一个当前挂起的PLAY请求,将返回错误“457 Invalid Range”。如果一个媒体单元(比如一个音频或视频禎)正好在一个暂停点开始,那么表示将不会被播放或记录。如果Range头缺失,那么在收到暂停消息后媒体流传输立即中断,并且暂停点设置成当前正常播放时间。

6.TEARDOWN:

TEARDOWN请求终止了给定URI的媒体流传输,并释放了与该媒体流相关的资源。如:

C->S: TEARDOWN rtsp://example.com/fizzle/foo RTSP/1.0 CSeq: 892

Session: 12345678 S->C: RTSP/1.0 200 OK CSeq: 892

七、RTSP重要头字段参数

1.Accept:

用于指定客户端可以接受的媒体描述信息类型。比如: Accept: application/rtsl, application/sdp;level=2 2.Bandwidth:

用于描述客户端可用的带宽值。

3.CSeq:

指定了RTSP请求回应对的序列号,在每个请求或回应中都必须包括这个头字段。对每个包含一个给定序列号的请求消息,都会有一个相同序列号的回应消息。

4.Rang:

用于指定一个时间范围,可以使用SMPTE、NTP或clock时间单元。

5.Session:

Session头字段标识了一个RTSP会话。Session ID 是由服务器在SETUP的回应中选择的,客户端一当得到Session ID后,在以后的对Session 的操作请求消息中都要包含Session ID.6.Transport:

Transport头字段包含客户端可以接受的转输选项列表,包括传输协议,地址端口,TTL等。服务器端也通过这个头字段返回实际选择的具体选项。如: Transport: RTP/AVP;multicast;ttl=127;mode=“PLAY”, RTP/AVP;unicast;client_port=3456-3457;mode=“PLAY”

八、简单的RTSP消息交互过程

C表示RTSP客户端,S表示RTSP服务端

1.第一步:查询服务器端可用方法

1.C->S:OPTION request //询问S有哪些方法可用

1.S->C:OPTION response //S回应信息的public头字段中包括提供的所有可用方法

2.第二步:得到媒体描述信息

2.C->S:DESCRIBE request //要求得到S提供的媒体描述信息 2.S->C:DESCRIBE response //S回应媒体描述信息,一般是sdp信息

3.第三步:建立RTSP会话

3.C->S:SETUP request //通过Transport头字段列出可接受的传输选项,请求S建立会话

3.S->C:SETUP response //S建立会话,通过Transport头字段返回选择的具体转输选项,并返回建立的Session ID;4.第四步:请求开始传送数据

4.C->S:PLAY request //C请求S开始发送数据 4.S->C:PLAY response //S回应该请求的信息

5.第五步: 数据传送播放中

S->C:发送流媒体数据 // 通过RTP协议传送数据

6.第六步:关闭会话,退出

6.C->S:TEARDOWN request //C请求关闭会话

6.S->C:TEARDOWN response //S回应该请求

上述的过程只是标准的、友好的rtsp流程,但实际的需求中并不一定按此过程。

其中第三和第四步是必需的!第一步,只要服务器客户端约定好,有哪些方法可用,则option请求可以不要。第二步,如果我们有其他途径得到媒体初始化描述信息(比如http请求等等),则我们也不需要通过rtsp中的describe请求来完成。

第二部分:SDP协议

一、SDP协议概述

SDP(Session Description Protocol)会话描述协议,用于描述多媒体会话,它为会话通知、会话初始和其它形式的多媒体会话初始等操作提供服务。

SDP 的设计宗旨是通用性协议,所有它可以应用于很大范围的网络环境和应用程序,但 SDP 不支持会话内容或媒体编码的协商操作。

SDP信息包括:

    会话名称和目标; 会话活动时间; 构成会话的媒体;

有关接收媒体的信息、地址等。

二、SDP格式

SDP 信息是文本信息,UTF-8 编码采用 ISO 10646 字符设置。SDP 会话描述如下(标注*符号的表示可选字段):

v=(协议版本)

 o=(所有者/创建者和会话标识符) s=(会话名称) i=*(会话信息)

     u=*(URI 描述)e=*(Email 地址)p=*(电话号码)

c=*(连接信息 ― 如果包含在所有媒体中,则不需要该字段)b=*(带宽信息)

一个或更多时间描述(如下所示): z=*(时间区域调整) k=*(加密密钥)

 a=*(0个或多个会话属性线路) 0个或多个媒体描述(如下所示)

时间描述

t=(会话活动时间)

 r=*(0或多次重复次数)

媒体描述

      m=(媒体名称和传输地址)i=*(媒体标题)

c=*(连接信息 — 如果包含在会话层则该字段可选)b=*(带宽信息)k=*(加密密钥)

a=*(0个或多个会话属性线路)

三、SDP示例

v=0 o=mhandley 2890844526 2890842807 IN IP4 126.16.64.4 s=SDP Seminar i=A Seminar on the session description protocol u=http://www.xiexiebang.compatibility.Support for the protocol was finally dropped in Windows Media Services 2008[1].Note however that Microsoft still recommends[2] using “mms://” as a “protocol rollover[3] URL”.As part of protocol rollover a Windows Media Player 11 client opening an “mms://” URL will attempt to connect first with RTSP over UDP and if that fails it will attempt RTSP over TCP.Earlier Windows Media Player clients as well as version 11 after having failed RTSP will attempt MMS over UDP, then MMS over TCP.If MMS failed a modified version of a HTTP over TCP connection will be attempted, this modified version is also referred to as MMSH[4].

第二篇:常见接口协议学习笔记总结

SPI通信

SPI简介:(高速,全双工,4线同步串行总线)

SCK:主机输出的用来同步数据传输的串行时钟;MOSI:主机输出从机输入;MISO主机输入从机输出;NSS:由主机输出的片选使能低电平有效 SPI例程相关配置如下:

注意事项:(与配置UART 类似)1.配置SPI x时应确保对应相应路的SPI 2.配置相关GPIO和使能其时钟时要对应正确的管脚类型 3.特别注意配置各路SPI时,确定其对应的替代函数映射形式

硬件连接示意图:

SPI通信是由主设备时钟信号来确定主/从设备间的通信。一旦检测到主设备的时钟信号,在SCK(只由主机控制)的控制下,两个串行移位寄存器进行数据交换。

注意:当一个系统下挂有多个SPI从机设备时,可以有GPIO口对使能端NSS进行控制,当只有一个从机时可以将使能端NSS直接接地拉低。

SPI寄存器数据传输图示

SPI各个设备传输数据的过程中总是先发送或接收高字节数据,每个时钟周期接收器或收发器左移1位数据。对于小于16位的数据在发送之前必须左对齐,如果接收的数据小于16位则采用软件将无效的数据位屏蔽。特别注意:主机的时钟极性和相位以从机为基准,要搞清楚数据传输是在上升沿输出还是在下降沿接收数据等等,都要进行一一对应。

I2C通信

I2C简介:一个双向的两线连续总线,一条数据线(SDA)和一条时钟线(SCL)。I2C总线有三种数据传输速度:标准模式100Kbps,快速模式400Kbps和高速模式可达3.4Mbps。

I2C总线结构主要用于连接整体电路,一种双向控制总线,即多个芯片(设备)可连接同一总线结构下,每个设备都可以作为实时数据传输的控制源,简化了总线结构。外设连接示意图:

在不发送任何数据的时候数据线和时钟线都为高电平。

所以I2C通信在硬件设计,需要在数据线和时钟线上分别加上两个上拉电阻。其次,I2C控制硬件进行数据传输时,硬件状态的改变需要一定的时间。

I2C例程配置如下:

注意事项:(与配置SPI,UART 类似)

1.配置I2C x时应确保对应相应路的I2C(例程为I2C3)2.配置相关GPIO和使能其时钟时要对应正确的管脚类型 3.特别注意在主函数中,开始时要对相关的时钟进行使能 数据通信时序简介:

1.主机发送开始信号,将SDA拉低,此时SCL处于高电平状态。2.从机检测到开始信号,准备接收数据。

3.主机先拉低SCL将数据一位一位放在SDA上,然后再将SCL拉高(释放)。

4.从机检测到SCL的变化,会在SCL高电平期间(主机不会太长时间去等待从机接受)将下一个SDA数据放进自己的寄存器中待处理。

5.主机会在设定好的时间后将SCL拉低并放进下一个SDA,然后再拉高SCL,从机会在SCL高电平期间读取SDA数据。

6.如此往复,完成8位数据(1Byte)传输,此时SCL处于低电平,SDA处于高电平。

总线死锁现象分析与解决方法

I2C总线写操作过程中,主机在产生启动信号后控制SCL产生8个时钟脉冲,然后拉低SCL信号为低电平,在这个时候,从机输出应答信号,将SDA信号拉为低电平。如果这个时候主机异常复位,SCL就会被释放为高电平。此时,如果从机没有复位,就会继续I2C的应答,将SDA一直拉为低电平,直到SCL变为低电平,才会结束应答信号。而对于主机来说,复位后检测SCL和SDA信号,如果发现SDA信号为低电平,则会认为I2C总线被占用,会一直等待SCL和SDA信号变为高电平。这样,主机等待从机释放SDA信号,而同时从机又在等待主机将SCL信号拉低以释放应答信号,两者相互等待,I2C总线进人一种死锁状态。同样,当I2C进行读操作时,从机应答后输出数据,如果在这个时刻主机异常复位而此时从机输出的数据位正好为0,也会导致I2C总线进入死锁状态。解决方案通常有如下几种:

(1)将从机的电源设计为可控,当发生总线死锁时将从机复位

(2)可以在从机的程序中加入监测功能,如果总线长时间被拉低则释放对总线的控制(3)在主机中增加I2C总线恢复程序。每次主机复位后,如果检测到SDA被拉低,则控制SCL产生<=9个时钟脉冲(针对8位数据的情况),每发送一个时钟脉冲就检测SDA是否被释放,如果SDA已经被释放就再模拟产生一个停止信号,这样从机就可以完成被挂起的读写操作,从死锁状态中恢复过来。这种方法有一定的局限性,因为大部分主机的I2C模块由内置的硬件电路来实现,软件并不能够直接控制SCL信号模拟产生需要时钟脉冲。笔记:

时钟SCL只能由主机控制,数据SDA主机从机都可控制。I2C主机通过地址选择要与自己通信的从机; I2C起始信号:SCL = 1, SDA产生一个下降沿; I2C结束信号:SCL = 1,SDA产生一个上升沿;

在数据传输阶段:SCL = 1的时候SDA数据线不能变化,如果SDA发生变化那意味着结束;

SCL = 1;SDA = 1;为空闲状态;

总线上各器件的SCL、SDA为线与关系,某一个器件的引脚输出低,则为低。通信过程中要注意应答信号,在第9个时钟时,SDA=0(ack响应),SDA=1(nak不响应)。

第三篇:一个自己学习总结的php类学习笔记

1,类:类是一组具有相同数据结构和相同操作的对象的集合,类是对象的抽象,他将一组数据属性和在数据上的一组合法操作抽象封装,类好比是一个对象模板,基于类就可以生成多个具有不同属性值的对象。

2,创建类:

Class classname

{

}

3,为该类添加属性和方法:只需要在类中声明变量即可。声明了属性之后可以获取该属性的值。

⑴创建属性:Class classname

{

Var $myName;

Var $myAge;

}

⑵创建方法:class classname

{

Var $myName;

Var $myAge;

Function getName()

{

}

Function getAget($arg1,$arg2)

{

}

}

注:以上创建了两个类的方法,方法名称分别为:getName,getAge

4,构造函数:大多数的类都有构造函数,当一个类实例被调用时,将调用构造函数,通常在构造函数中将执行一些初始化的操作。

⑴在类中声明构造函数:同声明其他函数一样,但是构造函数的名称是固定的。即函数名必须为:__construct()

注:构造函数可以由编程人员主动调用,但大部分时候,都是在创建类对象实例的时候自动调用。构造函数也可以传递参数,这些参数可以在调用类的时候传递。

声明构造函数的方法:

Class classname

{

Function __construct($param)

{

代码

}}

⑵析构函数:是一种当对象被销毁时,无论使用了unset()或简单的脱离范围,都会被自动调用的函数。

与构造函数的名称类似,一个类的析构函数名称必须是_destruct()

5,类的实例化:声明了一个类之后,如果要使用该类,必须创建该类的一个实例,实际上也可以将该类作为一个变量,在使用之前必须手动定义。用关键字“new”来创建

一个类的实例。

Class classname

{

Function __construct($myName)

{echo(“我的名字是:$myName
”);}

}

$name1=new myName(“小猪”);

$name2=new myName(“小狗”);//创建了2个该类的实例

?>

注:new myName(“小猪”)中的参数“小猪”会被 自动传递到构造函数,然后构造函数直接使用该参数。

6,使用类的属性:

在一个类中访问类成员变量有一个特殊的指针:$this通过该指针可能方便的访问类属性或是给类属性赋值。

Class classname

{

Var $myattrib;//定义属性

Function operate($myparam)//为类创建方法

{

$this->myattrib=$myparam;//设置属性值为$myparam

Echo $this->myattrib;//输出属性值

}

}

⑴如果要在类的外部访问一个类的属性,需要确定该属性能否被外部访问。因为在类中定义的属性可以设置外界访问的权限。

以上对属性$myarrtib进行限制,外界可以直接访问:

$newclass =new classname();//创建一个类classname实例

$newclass->myattrib=”小马”;//给属性赋值

Echo $newclass->myattrib;//输出属性

⑵从类的外部直接访问类的属性不是一个好的方法,面向对象方法的一个优点就是使用类的封装。可以通过使用__get()和__set()函数来实现对该类属性的访问。

Class classname

{

Var $myattrib;//定义属性

Function __get($attribName)//获取属性值的函数

{

Return $this->attribName;//返回该属性的值

}

Function __set($arrtibName,$value)//设置属性值的函数

{

$this->$attribName=$value;//设置属性值

}

}

注:__get函数只有一个参数,该参数用来传递属性的名称,__set函数有两个参数,第一个参数为属性的名称,第二个参数为要设置的属性的值。可以通过这两 个函数来检查和设置任何属性的值。

7,类的访问控制:

Php5 支持的3 种控制符:

⑴public(默认的)public表示该属性和方法在类的内部或外部都可以直接被访问。

⑵private 表示该属性和方法只能在类的内部进行访问。如果没有使用__get()和__set(),则可能对所有的属性都使用这个关键字,也要选择部分方法为私有,但私有的属性和方法不能被继承。

⑶Protected 表示被标记的属性或方法只能在类的内部进行访问,他也存在于任何子类中。Class classname

{

Public $myattrib;

Public function __get($attribName)//获取属性值的函数

{

Return $this->$attribName;//返回该属性值

}

Public function __set($attribName,$value)//设置属性值的函数

{

This->$attribName=$value;//设置属性值

}

}

8,类方法的调用:

Class classname

{

Var $myAttrib;

Function func_1($param)//函数func_1

{

代码

}

Function func_2($param1$param2)

{

代码

}

Function func_3($param1$param2)

{

代码

Return backvalue;

}

}

调用以上类的3个函数:

$newclass->func_1(“123”);

$newclass->func_2(“123”,”abc”);

$myvalue=$newclass->func_3(“123”,”abc”);//调用func_3并获取返回值。

9,有关类的代码:

$this通过该指针可能方便的访问类属性或是给类属性赋值。class Employee//创建一个类“Employee”

{

var $empno;// 员工人数//定义类的属性

var $empnm;// 员工姓名

function add_employee($in_num, $in_name)//创建类的方法为“add_employee”

{

$this->empno = $in_num;//给类的属性赋值

$this->empnm = $in_name;

}

function show()//创建类的方法为“show”

{

echo “$this->empno, $this->empnm”;//输出属性值

return;

}

function changenm($in_name)

{

$this->empnm = $in_name;}

}

$sbabu = new Employee;

$sbabu->add_employee(10,“sbabu”);$sbabu->changenm(“babu”);$sbabu->show();

第四篇:网络学习笔记总结

1需要掌握重点:

网络的定义:网络就是将两台或两台以上的计算机以一定方式连接起来,起到共享文件,程序数据的作用

网络分类

1)按范围分:lan,wan,man 2)按拓扑结构分:总线型,环形,星型,树形

3)按传输介质分:双绞线,同轴电缆,光纤,无线网络

局域网中常用设备:交换机,路由器

十进制和二进制的转换

十进制(逢十进一):范围0-9 二进制(逢二进一):范围0-1 转换方式(二进制转十进制:凑数法,在计算机中1为真,0为假,只取真值相加结果就为十进制,十进制转二进制也同样如此,详见案例)

111011这个二进制转十进制

64 32 16 8 4 2 1 0

0 1 1 0 1 1 结果:32+16+8+2+1=59

13这个十进制转二进制 16 8 4 2 1 0 1 1 0 1 结果:1101

2需要掌握重点: Osi七层模型

物理层:bit流的传输

数据链路层:提供介质得到访问的链路的管理 网络层:寻址和路由选择

传输层:建立主机端到端的连接 会话层:建立维护和管理会话

表示层:处理数据的加密和数据格式 应用层:提供程序间的通信

tcp/ip四层模型

封装协议

网络接口层: ppp,hdlc,fr 网络层:

ip 传输层:

tcp/udp 应用层

http/telnet/ftp/dns等

3需要掌握重点 数据通信基础:

1数据组成:字母和数字,如:图片,视频,文字等 2数据通信:

1)数据交换的过程

2)传输介质来进行数据传输 3)传输介质:网线,无线,光钎

网线做法:

A 白绿,绿,白橙,蓝,白蓝,橙,白棕,棕

B 白橙,橙,白绿,蓝,白蓝,绿,白棕,棕

(两端都一致,在现实生活中98%都用这种,用于连接不同层的设备)

网线(最高传输距离为100m)分为: 全反线:配置路由器和交换机 直通线:不同层设备的连接 交叉线:相同层设备的连接

光钎:单模和多模

特点:传输带宽高,距离远,抗干扰能力强

3数据通信系统的组成 1)发送方 2)接收方 3)传输介质 4)预定--协议 5)数据包-报文

4数据流方向

1)单工,只接收数据,不发送(电视机,显示器)2)半双工,在发送的时候不能接收数据(对讲机)3)全双工,可以同时发送和接收数据

(手机)

4需要掌握重点

综合布线系统(六大子系统)水平子系统 工作区子系统 管理子系统 垂直子系统 建筑群子系统 设备间子系统

5需要掌握重点

冲突域:在以太网中,当多个节点同时传输数据时,从多个设备发出的帧将会碰撞,在物理介质上相遇,彼此数据都将会被破坏,这样的共享介质网段就叫冲突域 交换机隔离冲突域(交换机每一个端口就代表一个冲突域)

广播域:广播帧传输的网络范围,一般是由路由器来设定边界的,(因为路由器不转发广播)路由器隔离广播域(路由器的每一个端口代表一个广播域)

交换机原理(工作在数据链路层):根据源mac地址学习,目标mac地址转发,基于硬件转发 三种转发方式

1)对已知单播帧,只对应端口转发 2)对未知单播帧,进行广播 3)对广播帧进行广播

交换机分类:二层交换机,三层交换机,vlan型交换机

思科设备的命令行管理模式 用户模式> 特权模式#

en

全局配置模式(config)conf t 接口模式(config)# int 接口类型、模块号

如f0/1

Exit返回上一级 End 返回特权模式 Ctrl+z 返回特权模式

6需要掌握重点

Ip地址:主机唯一标识,是世界上唯一的,跟mac地址一样,mac是物理地址,ip地址是逻辑地址,主要是保障主机间能正常通信,方便记忆

Ip地址分为ipv4(现在主流用的,几乎接触的100%都是这类地址)和ipv6

Ipv4地址分为两部分来表示 网络位--大厦名称 主机位---门牌号

Ipv4表示方法:点分十进制,共4个字节(32个bit),每一个字节为一个单位,中间用“.”l来区分开

如:192.168.1.24/24

Ip地址分类:abc类最常用,d用于组播,e用于保留科研 类型

范围

二进制网络位

二进制主机位

可用主机数 A

0-127

2的24次方-2 B

128-191

2的16次方-2 C

192-223

2的8次方-2 D

224-239 E

240-255

子网掩码:用来区分主机位和网络位的7需要掌握重点 网络层协议

功能:1)处理来自传输层得的分组发送请求 2)输出输入数据报文 3)处理icmp报文

Arp协议:(地址解析协议):负责将对应的ip地址解析成mac地址 Arp功能就是通过目标主机查询其mac地址

Icmp协议:错误侦测与回馈机制,用来发送和控制消息 典型应用ping Ping语法

ping 空格

[选项]

如ping 192.168.1.21

8需要掌握重点

路由器工作原理:寻址和转发

路由协议:直连路由,静态路由,动态路由

静态路由的优缺点 优点:

1)对硬件资源占用不高 2)不占用带宽 3)增加网络安全 缺点:

1)配置工作量大并且容易出错 2)适应拓扑变化能力较差

静态路由配置语法: ip route 目的ip网络号

子网掩码

直连路由的出口地址 默认路由配置语法: ip route 0.0.0.0 0.0.0.0 直连路由的出口地址

演示案例: 实验拓扑图:

配置命令:

实验步骤:首先必须要配置好预配置,也就是把环境搭建好的情况下才可能完成此实验,搭建环境包括,配置每个接口的ip地址,确保每个直连路由是ok的 en conf t host R1 inter f0/0 ip add 13.1.1.1 255.255.255.0 no shut inter s1/1 ip add 12.1.1.1 255.255.255.0 no shut inter lo 0 ip add 1.1.1.1 255.255.255.0 end

en conf t host R2 inter s1/0 ip add 12.1.1.2 255.255.255.0 no shut inter s1/1 ip add 23.1.1.2 255.255.255.0 no shut inter lo 0 ip add 2.2.2.2 255.255.255.0 end

en conf t host R3 inter f0/0

ip add 13.1.1.3 255.255.255.0 no shut inter s1/0 ip add 23.1.1.3 255.255.255.0 no shut inter lo 0 ip add 3.3.3.3 255.255.255.0 end

//配置好预配置之后,静态路由的配置

R1的静态路由配置

ip route 2.2.2.0 255.255.255.0 12.1.1.2 ip route 3.3.3.0 255.255.255.0 13.1.1.3 ip route 23.1.1.0 255.255.255.0 13.1.1.3

R2的静态路由配置

ip route 1.1.1.0 255.255.255.0 12.1.1.1 ip route 3.3.3.0 255.255.255.0 23.1.1.0 ip route 13.1.1.0 255.255.255.0 12.1.1.1

R3的静态路由配置

ip route 1.1.1.0 255.255.255.0 13.1.1.1 ip route 2.2.2.0 255.255.255.0 23.1.1.2 ip route 12.1.1.0 255.255.255.0 13.1.1.1

//删除静态路由 删除R1的静态路由

no ip route 2.2.2.0 255.255.255.0 12.1.1.2 no ip route 3.3.3.0 255.255.255.0 13.1.1.3 no ip route 23.1.1.0 255.255.255.0 13.1.1.3

删除R2的静态路由

no ip route 1.1.1.0 255.255.255.0 12.1.1.1 no ip route 3.3.3.0 255.255.255.0 23.1.1.0 no ip route 13.1.1.0 255.255.255.0 12.1.1.1

删除R3的静态路由

no ip route 1.1.1.0 255.255.255.0 13.1.1.1 no ip route 2.2.2.0 255.255.255.0 23.1.1.2 no ip route 12.1.1.0 255.255.255.0 13.1.1.1

//默认路由的配置 默认路由

R1: ip route 0.0.0.0 0.0.0.0 12.1.1.2 R2: ip route 0.0.0.0 0.0.0.0 23.1.1.3 R3: ip route 0.0.0.0 0.0.0.0 13.1.1.1

第五篇:java学习笔记总结

java 学习笔记总结

1.Java是什么呢?

Java不仅是一门语言,而且是一个完整的平台,有一个庞大的库,其中包含了很多可重用的代码和一个提供安全性、跨操作系统的可移植性以及自动垃圾收集等服务的执行环境。

2.JDK 和 JRE 是什么?

JDK:全称是 Java Development Kit,这是我们编写java程序的开发人员需要的。我们首先要下载和安装JDK,然后设置环境变量,具体操作可以加我扣:七零五叁零六久久久

JRE:全称是 Java Runtime Environment,它包含虚拟机但不包含编译器,这是运行java程序的用户需要的环境

3.来个Hello World看看吧?

照例先创建一个类HelloWorld.java,源代码如下: /** * @author 老孙

*/ public class HelloWorld {

public static void main(String[] args){

System.out.println(“Hello World”);

} } Java类名一般是以大写字母开头的名词,多个单词的话每个单词首字母都应该大写。Java源代码以.java作为扩展名,而且文件名必须和文件里的公共类同名。

4.怎么用命令行运行java程序?

比如上面我们编写了一个类叫做HelloWorld.java,首先打开一个终端;

 然后进入到HelloWorld.java类所在的目录;  输入命令 javac HelloWorld.java。javac是一个java编译器,注意该命令需要的是文件名,也就是要带着.java后缀。 输入命令 java HelloWorld。java启动Java虚拟机,该命令只需要类名,不需要带着.java或者.class等后缀。

5.Java代码怎么加注释?

// 单行注释 和 /*{……}*/ 长篇注释,这两种方式很多语言都一样,没什么特别强调的。

另外还有一种注释可以方便的生成java doc文档,以/** 开头,以*/结束。

6.Java的几种基本数据类型是?

4种整型:byte(1字节),short(2字节),int(4字节),long(4字节)。(PS:Java没有无符号整型) 2种浮点型:float(4字节),double(8字节) 字符类型:char  布尔类型:boolean

在Java种每个类型占用几个字节是固定的,与运行java的机器无关,这点与C#不同,这也是Java具有可移植性的关键点。

浮点类型一般double比float常用,而且浮点型存在四舍五入的情况,如果用在对精确度要求高的商业场景,就得使用java.math.BigDecimal类型了。我们写个demo看看: 

/** * @author 老孙

*/ public class DemoDouble { public static void main(String[] args){

double d1=0.05;

double d2=0.01;

double result=d1+d2;

System.out.println(result);//结果:0.***005

BigDecimal bd1=new BigDecimal(“0.05”);

BigDecimal bd2=new BigDecimal(Double.valueOf(“0.01”));

double result2=bd1.add(bd2).doubleValue();

System.out.println(result2);//结果:0.06

} }

7.Java怎么定义常量?

使用关键字final定义常量,之前C#用的是const关键字,这一点不同要注意一下。命名规则上,常量一般使用大写字母,中间用下划线分隔。例如: private static final Integer MAX_SIZE=100;

8.String字符串怎么截取子串?

Substring(beginIndex,endIndex):返回子字符串,从beginIndex到endIndex-1。String s=“你好,今天是2018年1月5日,圣诞快乐!” String date = s.substring(6,17);System.out.println(date);// 输出:2018年1月5日

注意:该方法的返回结果不包含最后一个位置的字符。如果有问题就问我:七零五叁零六久久久 9.Java字符串怎么拼接?

①最简单的拼接方式就是使用+符号。

②String.join(char,str1,str2….strN):静态方法拼接字符串,用字符char分隔,将字符串进行拼接。//拼接

String s2=String.join(“、”,“JAVA核心技术”,“JAVA编程思想”,“SpringBoot”);System.out.println(s2);//输出:JAVA核心技术、JAVA编程思想、SpringBoot

③当有大量字符串拼接操作的时候使用StringBuilder,这跟C#基本相同。

10.怎么判断两个Java字符串是否相等?

equals方法判断两个字符串内容是否相等。而==判断两个字符串是否指向内存中同一位置。//比较

String s3=“abc”;String s4=“abc”;String s5=new String(“abc”);String s6=new String(“abc”);System.out.println(s3==s4);//true System.out.println(s3.equals(s4));//true System.out.println(s5==s6);//false System.out.println(s5.equals(s6));//true 这个demo中s3==s4返回true,因为在Java中字符串是不可修改的,编译器有一些优化机制让字符串共享,所以s3和s4实际上指向了内存中同一位置 11.Java数组有哪些常用操作?

①foreach循环数组

//foreach循环数组 int[] arr={1,3,5,7,9};for(int item:arr){ System.out.println(item);} ②打印数组元素

Arrays.toString(a):返回字符串,数组元素包含在方括号中,以逗号分隔。Arrays.deepToString(arr):用来打印多维数组。//打印数组

System.out.println(Arrays.toString(arr));//输出 [1, 3, 5, 7, 9] int[][] arrM={{1,2,3},{11,12,13},{21,22,23}};System.out.println(Arrays.deepToString(arrM));//[[1, 2, 3], [11, 12, 13], [21, 22, 23]] ③拷贝数组元素

静态方法Arrays.copyOf(originalArray,length):第一个参数是要拷贝的源数组,第二个元素是新数组的长度,如果第二个大于原数组长度,则自动填充默认值。//拷贝数组元素

int[] arr2=Arrays.copyOf(arr,arr.length);System.out.println(Arrays.toString(arr2));//输出 [1, 3, 5, 7, 9] int[] arr3=Arrays.copyOf(arr,arr.length/2);System.out.println(Arrays.toString(arr3));//输出 [1, 3] int[] arr4=Arrays.copyOf(arr,arr.length*2);System.out.println(Arrays.toString(arr4));//输出 [1, 3, 5, 7, 9, 0, 0, 0, 0, 0] ④排序

静态方法Arrays.sort()方法采用优化后的快速排序算法对数组元素进行排序。//排序

int[] arr6={12,4,53,78,21,943,3};Arrays.sort(arr6);System.out.println(Arrays.toString(arr6));//输出 [3, 4, 12, 21, 53, 78, 943]

⑤查找

静态方法Arrays.binarySearch(arr, valueToFind):二分查找,第一个参数是要查找的数组,第二个参数是要查找的目标元素。该方法有个前提是数组必须是有序的。//查找

int index=Arrays.binarySearch(arr6,12);//输出 2 System.out.println(index);

⑥填充数组元素

静态方法Arrays.fill(arr,item):将数组arr每个元素都填充为item.//填充数组元素

String[] arr7=new String[5];Arrays.fill(arr7,“*”);System.out.println(Arrays.toString(arr7));//[*, *, *, *, *]

⑦比较数组

注意要使用Arrays.equals(arr1,arr2)比较数组,如果两个数组元素全部相同,则返回true。//比较数组元素

String[] arr8={“*”,“*”,“*”,“*”,“*”,};System.out.println(arr7.equals(arr8));//false System.out.println(Arrays.equals(arr7,arr8));//true

12.日期对象LocalDate ①获取当前日期时间 //当前日期

LocalDate today=LocalDate.now();

System.out.println(today);//2017-12-26

//当前时间

LocalTime currentTime=LocalTime.now();

System.out.println(currentTime);//12:23:09.054

//当前日期时间

LocalDateTime dateTime=LocalDateTime.now();

System.out.println(dateTime);//2017-12-26T12:23:09.054

②构造某个指定日期

//构造指定日期

LocalDate newYear=LocalDate.of(2018,1,1);System.out.println(newYear);//2018-01-01

③解析日期字符串,如果不合法会抛出异常。

//解析日期字符串

LocalDate date1=LocalDate.parse(“2018-12-31”);System.out.println(date1);//2018-12-31//LocalDate.parse(“2018-11-31”);//抛出异常

④获取若干天后的某个日期 //15天后

LocalDate date15=today.plusDays(15);System.out.println(date15);//2018-01-10

⑤获取年份、月份、日期

//获取年、月、日

System.out.println(date15.getYear());//2018 System.out.println(date15.getMonth());//JANUARY System.out.println(date15.getMonthValue());//1 System.out.println(date15.getDayOfMonth());//10 System.out.println(date15.getDayOfWeek());//WEDNESDAY System.out.println(date15.getDayOfYear());//10 注意:使用Date对象的getYear()方法,不能获取当前的年份

System.out.println(new Date().getYear());//117,不是我们想要的结果2018 我们看一下该方法的源码,计算的是当前年份和1900年的差值

public int getYear(){ return normalize().getYear()-1900;}

大家在学习的过程中遇到任何的问题都可以咨询我(QQ:705306999,奔跑de蜗牛)

也可以加入到我们的免费学习交流群: 579016988(职坐标java编程交流群2)玩微信的朋友也可以加老孙的个人微信公众号:微信右上角点击加号--添加朋友--公众号--搜索:我是老孙(如下图),也会不定期发送技术文章,娱乐八卦,吃喝玩乐,房产头条,心灵鸡汤等信息!

加图片说明文字

注意:添加时请注明微博

移除点击此处添如果大家想看老孙的直播学习,可以加入咱们的免费公开课进行学习!腾讯课程地址:https://ke.qq.com/course/92963#tuin=2a0a2177

有的人会这样说:“我只是在业余时间打盹而已,业余时间干吗把自己弄得那么紧张?”

爱因斯坦就曾提出:“人的差异在于业余时间。”

一位在哈佛任教的朋友说,只要知道一个青年怎样度过他的业余时间,就能预言出这个青年的前程怎样。记得点赞和转发哦!

片说明文字

移除点击此处添加图

下载RTSP协议学习笔记(学习流媒体的时候自己总结的)word格式文档
下载RTSP协议学习笔记(学习流媒体的时候自己总结的).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    学习笔记

    学习笔记 党章是党的最基本性的纲领文件,代表了全党的跟本利益和意志,集中体现了党员先进性的基本要求,是党员和党的领干部必须遵守的基本准则。 通过对新党章的学习,结合国家重......

    学习笔记

    学习笔记1、2011年3月11日集中学习培训《农民负担监督管理》相关政策 2、2011年5月20日集中学习培训《农村财务管理》相关政策 3、2011年7月15日 专业合作社法》 4、2011年9......

    学习笔记

    贯穿卫生工作的总路线,推动卫生事业的发展 随着社会的进步,科学的发展,人们对自己的健康的需求不断增加,因此,卫生工作的路线也在不断的深入和发展,进一步推动着卫生事业的前进的......

    学习笔记

    政 治 学习讲 座 长岭县第二幼儿园 本学期,幼儿园进行了教师业务学习改革,变自上而下的单向组织学习,为自上而下和自下而上想结合的双向交流、相互学习的形式,旨在提高教师的......

    学习笔记

    学习笔记(一) 唐理欢 学习内容:《运用微课实现翻转课堂》 来自因特网 翻转课堂的兴起在一定程度上借助了慕课的理念和声势,而真正能够实现翻转课堂则是微课,因此,对于学会制作与运......

    学习笔记

    社会主义核心价值观 1. 先说“富强、民主、文明、和谐”。国家的价值目标在社会主义核心价值观中居于主导地位,决定着社会的价值取向,影响着个人的价值标准。每个人的前途命运......

    学习笔记

    坚持全心全意为人民服务的宗旨,是坚持党的性质的本质要求。十六大党章对党的性质作出了新表述,明确指出:“中国共产党是中国工人阶级的先锋队,同时是中国人民和中华民族的先锋队......

    学习笔记

    党章是我们党"最根本的党规党法",是我们党全部活动的总章程,是每一名党员必须遵守的基本准则。每一名党员都要认真学习贯彻党章,要做学习贯彻党章的模范。 一、学习贯彻党章,做......