1、MESSAGE消息
1)头字段填写说明
Call-id: 必选
CSeq: 必选
From: 必选
To: 必选
Max-Forwards: 必选
Via: 必选
常用的可选参数:
指定的消息体
2)消息实例
发送MESSAGE请求消息给192.168.2.48的6010端口,参考消息如下(带了“Hello”的消息体):
1897778888@192.168.2.48:6010 SIP/2.0

Call-ID: 8e12c17121ac4121bf927f6fd8013358@192.168.2.89

From: <sip:01052237300@192.168.2.89>;tag=-0037-708c9a5cba8dd878

To: <sip:1897778888@192.168.2.89>

CSeq: 1 MESSAGE

Via: SIP/2.0/UDP 192.168.2.89:14010;branch=z9hG4bK--22bd7222

Max-Forwards: 30

Allow: INVITE,ACK,OPTIONS,BYE,CANCEL,REGISTER,INFO,UPDATE,PRACK,REFER,SUBSCRIBE,NOTIFY,MESSAGE

Contact: <sip:192.168.2.89:14010>

Content-Type: text/plain

Content-Length: 5

Hello
收到来自192.168.2.48的6010端口的返回消息,参考消息如下(修改了消息体的内容,变成了“Hello amigo”):
2.0 200 OK

Via: SIP/2.0/UDP 192.168.2.89:14010;branch=z9hG4bK--22bd7222

From: <sip:01052237300@192.168.2.89>;tag=-0037-708c9a5cba8dd878

To: <sip:1897778888@192.168.2.89>;tag=-002-3c18e810ab17c76f

Call-ID: 8e12c17121ac4121bf927f6fd8013358@192.168.2.89

CSeq: 1 MESSAGE

Allow: INVITE,ACK,OPTIONS,BYE,CANCEL,REGISTER,INFO,UPDATE,PRACK,REFER,SUBSCRIBE,NOTIFY,MESSAGE

Contact: <sip:192.168.2.48:54010>

Content-Type: text/plain

Content-Length: 11

Hello amigo
2、REGISTER消息
1)头字段填写说明
Call-id: 必选
Cseq: 必选
From: 必选
To: 必选
Max-Forwards: 必选
Via: 必选
Contact: 必选
Authorization: 必选
Expires: 常用可选头
2)非鉴权注册消息实例
在该实例中192.168.2.161机器发送注册消息给192.168.2.89服务器,发送消息实例如下:
192.168.2.89 SIP/2.0

Via: SIP/2.0/UDP 192.168.2.161:10586

Max-Forwards: 70

From: <sip:01062237496@192.168.2.89>;tag=ca04c1391af3429491f2c4dfbe5e1b2e;epid=4f2e395931

To: <sip:01062237496@192.168.2.89>

Call-ID: da56b0fab5c54398b16c0d9f9c0ffcf2@192.168.2.161

CSeq: 1 REGISTER

Contact: <sip:192.168.2.161:10586>;methods="INVITE, MESSAGE, INFO, SUBSCRIBE, OPTIONS, BYE, CANCEL, NOTIFY, ACK, REFER"

User-Agent: RTC/1.2.4949 (BOL SIP Phone 1005)

Event: registration

Allow-Events: presence

Content
当注册成功(回送200 OK)时,服务器发送的res消息参考如下:
2.0 200 OK

Via: SIP/2.0/UDP 192.168.2.161:10586

From: <sip:01062237496@192.168.2.89>;tag=ca04c1391af3429491f2c4dfbe5e1b2e;epid=4f2e395931

To: <sip:01062237496@192.168.2.89>;tag=-00834-14d0805b62bc026d

Call-ID: da56b0fab5c54398b16c0d9f9c0ffcf2@192.168.2.161

CSeq: 1 REGISTER

Allow: INVITE,ACK,OPTIONS,BYE,CANCEL,REGISTER,INFO,UPDATE,PRACK,REFER,SUBSCRIBE,NOTIFY,MESSAGE

Contact: sip:192.168.2.161:10586

Content-Length: 0

Expires: 3600
3)鉴权注册消息实例
当需要鉴权注册时,当请求端192.168.2.161使用BOL或xlite等发送注册消息给192.168.2.89服务器时,服务器对
192.168.2.161发送“401
Unauthorized”信息给请求端,提示请求段需要带上鉴权信息重新注册,请求端带上鉴权信息后(带有“Authorization”头字段)重新
向服务器注册,服务器验证鉴权头的正确性,如果鉴权成功,给请求端发送200 OK消息。若失败,继续发送401消息。
第一步:请求端(192.168.2.161)发送REGISTER消息,参考消息如下:
192.168.2.89 SIP/2.0

Via: SIP/2.0/UDP 192.168.2.161:8021

Max-Forwards: 70

From: <sip:01062237493@192.168.2.89>;tag=efca469543ce4788a6a6a2c7b66cd01f;epid=de4504430d

To: <sip:01062237493@192.168.2.89>

Call-ID: c88a247a74b54a8c9e676bdde3bba6c9@192.168.2.161

CSeq: 1 REGISTER

Contact: <sip:192.168.2.161:8021>;methods="INVITE, MESSAGE, INFO, SUBSCRIBE, OPTIONS, BYE, CANCEL, NOTIFY, ACK, REFER"

User-Agent: RTC/1.2.4949 (BOL SIP Phone 1005)

Event: registration

Allow-Events: presence

Content
第二步:服务器端(192.168.2.89)检查到需要鉴权,给请求端发送401结果码,并带上“WWW-Authenticate”头信息,参考消息如下:
2.0 401 Unauthorized

Via: SIP/2.0/UDP 192.168.2.161:8021

From: <sip:01062237493@192.168.2.89>;tag=efca469543ce4788a6a6a2c7b66cd01f;epid=de4504430d

To: <sip:01062237493@192.168.2.89>;tag=-001893-38ba013ba3dde36e

Call-ID: c88a247a74b54a8c9e676bdde3bba6c9@192.168.2.161

CSeq: 1 REGISTER

Allow: INVITE,ACK,OPTIONS,BYE,CANCEL,REGISTER,INFO,UPDATE,PRACK,REFER,SUBSCRIBE,NOTIFY,MESSAGE

Contact: <sip:192.168.2.89:14010>

Content-Length: 0

WWW-Authenticate: Digest realm="192.168.2.89", qop="auth", nonce="e17d377c3d2d9c343e26576a7fd04738481dfc10", opaque="", stale=FALSE, algorithm=MD5
第三步:请求端(192.168.2.161)通过“Authorization”头字段带上鉴权头信息,发送一个新的REGISTER消息,参考消息如下:
192.168.2.89 SIP/2.0

Via: SIP/2.0/UDP 192.168.2.161:8021

Max-Forwards: 70

From: <sip:01062237493@192.168.2.89>;tag=efca469543ce4788a6a6a2c7b66cd01f;epid=de4504430d

To: <sip:01062237493@192.168.2.89>

Call-ID: c88a247a74b54a8c9e676bdde3bba6c9@192.168.2.161

CSeq: 2 REGISTER

Contact: <sip:192.168.2.161:8021>;methods="INVITE, MESSAGE, INFO, SUBSCRIBE, OPTIONS, BYE, CANCEL, NOTIFY, ACK, REFER"

User-Agent: RTC/1.2.4949 (BOL SIP Phone 1005)

Authorization: Digest username="01062237493", realm="192.168.2.89", qop=auth, algorithm=MD5, uri="sip:192.168.2.89", nonce="e17d377c3d2d9c343e26576a7fd04738481dfc10", nc=00000001, cnonce="12660455546344082314666316435946", response="f57e47ce03162293b9ced07362ce2b79"

Event: registration

Allow-Events: presence

Content
第四步:服务器端(192.168.2.89)验证鉴权信息的合法性,若验证成功,发送200 OK消息,参考消息如下:
2.0 200 OK

Via: SIP/2.0/UDP 192.168.2.161:8021

From: <sip:01062237493@192.168.2.89>;tag=efca469543ce4788a6a6a2c7b66cd01f;epid=de4504430d

To: <sip:01062237493@192.168.2.89>;tag=-001894-a5eb977c8969aa51

Call-ID: c88a247a74b54a8c9e676bdde3bba6c9@192.168.2.161

CSeq: 2 REGISTER

Allow: INVITE,ACK,OPTIONS,BYE,CANCEL,REGISTER,INFO,UPDATE,PRACK,REFER,SUBSCRIBE,NOTIFY,MESSAGE

Contact: sip:192.168.2.161:8021

Content-Length: 0

Expires: 3600
3、SUBSCRIBE消息
1)头字段填写说明
Call-id: 必选
CSeq: 必选
From: 必选
To: 必选
Max-Forwards: 必选
Via: 必选
Expires: 常用可选头
2)消息实例
请求端(192.168.2.161)给服务器端(192.168.2.89)发送SUBSCRIBE消息,参考消息如下:
01062237498@192.168.2.89:5060 SIP/2.0

Via: SIP/2.0/UDP 192.168.2.161:32092;branch=z9hG4bK-d87543-ec03ee3e022acf28-1--d87543-;rport

Max-Forwards: 70

Contact: <sip:01062237498@192.168.2.161:32092>

To: "01062237498"<sip:01062237498@192.168.2.89:5060>

From: "01062237498"<sip:01062237498@192.168.2.89:5060>;tag=e01c2548

Call-ID: NDQzMGE1MDMzYWU0NjRiYzMxMGY3NGUxMjBhMjBkNTQ.

CSeq: 1 SUBSCRIBE

Expires: 300

Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO

User-Agent: eyeBeam release 1011d stamp 40820

Event: message-summary

Content
服务器端(192.168.2.89)发送回执的200 OK信息,参考消息如下:
2.0 200 OK

Via: SIP/2.0/UDP 192.168.2.161:32092;branch=z9hG4bK-d87543-ec03ee3e022acf28-1--d87543-;rport

From: "01062237498"<sip:01062237498@192.168.2.89:5060>;tag=e01c2548

To: "01062237498"<sip:01062237498@192.168.2.89:5060>

Call-ID: NDQzMGE1MDMzYWU0NjRiYzMxMGY3NGUxMjBhMjBkNTQ.

CSeq: 1 SUBSCRIBE

Content
4、INVITE消息
1)头字段填写说明
必选头域如下:
Call-id
Contact
CSeq
From
To
Max-Forwards
Via
Supported
Allow
常用可选头域:
Accept
Authorization
Content-length
Content-type
Record-Route
Route
Require
Proxy-Authorization
Proxy-require
P-asserted-identity
P-prefered-identity
Privacy
2)非鉴权INVITE消息实例
在这个实例中,笔者在本机(192.168.2.161)上使用BOL注册了17899998888号码,呼叫01062230001号码时发送INVITE消息给服务器(192.168.2.89)的软交换,发送INVITE消息参考如下:
01062230001@192.168.2.89 SIP/2.0

Via: SIP/2.0/UDP 192.168.2.161:9545

Max-Forwards: 70

From: "Administrator" <sip:17899998888@192.168.2.89>;tag=2dc6e1000081463ba14f7db4e50b8643;epid=d6b5434cef

To: <sip:01062230001@192.168.2.89>

Call-ID: 31e72e80d5b04f52aba6cb8be8f3c0c0@192.168.2.161

CSeq: 1 INVITE

Contact: <sip:192.168.2.161:9545>

User-Agent: RTC/1.2

Content-Type: application/sdp

Content-Length: 691

v=0

o=- 0 0 IN IP4 192.168.2.161

s=session

c=IN IP4 192.168.2.161

b=CT:1000

t=0 0

m=audio 56284 RTP/AVP 97 111 112 6 0 8 4 5 3 101

k=base64:fGmazgf5GXZfJxZ27G9A7rxA4B7KX0pHrjYELKphPog

a=rtpmap:97 red/8000

a=rtpmap:111 SIREN/16000

a=fmtp:111 bitrate=16000

a=rtpmap:112 G7221/16000

a=fmtp:112 bitrate=24000

a=rtpmap:6 DVI4/16000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:4 G723/8000
a=rtpmap:5 DVI4/8000
a=rtpmap:3 GSM/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=encryption:optional
m=video 61432 RTP/AVP 34 31
k=base64:W5uTU8sIQjJVPWyRF31GZouVwAHFtE1cAmblK+mvDdI
a=recvonly
a=rtpmap:34 H263/90000
a=rtpmap:31 H261/90000
a=encryption:optional
其中m行表示支持的媒体编码,其中“m=audio 56284 RTP/AVP 97 111 112 6 0 8 4 5 3
101”指明了几种支持的音频媒体类型,“m=video 61432 RTP/AVP 34
31”指明了几种支持的视频媒体类型。软交换服务器(192.168.2.89)接收到INVITE消息后,即刻发送了100
trying消息,如下所示:
2.0 100 Trying

Via: SIP/2.0/UDP 192.168.2.161:9545

From: "Administrator" <sip:17899998888@192.168.2.89>;tag=2dc6e1000081463ba14f7db4e50b8643;epid=d6b5434cef

To: <sip:01062230001@192.168.2.89>

Call-ID: 31e72e80d5b04f52aba6cb8be8f3c0c0@192.168.2.161

CSeq: 1 INVITE

Content
软交换服务器(192.168.2.89)查找被叫号码消息,并发送INVITE消息给被叫的地址,接收到被叫的100
trying消息,而后接收到180 Ringing消息,软交换服务器给主叫方也发送180
Ringing消息,告知被叫已振铃,发送消息如下:(第一行可不关注,是笔者公司的底层打出的消息):
===SIPTransaction Send SIP message (455 bytes) to 192.168.2.161:9545

SIP/2.0 180 Ringing

Via: SIP/2.0/UDP 192.168.2.161:9545

From: "Administrator" <sip:17899998888@192.168.2.89>;tag=2dc6e1000081463ba14f7db4e50b8643;epid=d6b5434cef

To: <sip:01062230001@192.168.2.89>;tag=-006773-7d10081ef45af150

Call-ID: 31e72e80d5b04f52aba6cb8be8f3c0c0@192.168.2.161

CSeq: 1 INVITE

Allow: INVITE,ACK,OPTIONS,BYE,CANCEL,REGISTER,INFO,UPDATE,PRACK,REFER,SUBSCRIBE,NOTIFY,MESSAGE

Contact: <sip:192.168.2.89:14010>

Content
软交换服务器(192.168.2.89)接收到被叫的INVITE消息的200 OK消息,给主叫方也发送200 OK消息,消息参考如下:
2.0 200 OK

Via: SIP/2.0/UDP 192.168.2.89:14010;branch=z9hG4bK--50c44f35

From: <sip:17899998888@192.168.2.89>;tag=-002221-d749165cdfed2151

To: <sip:01062230001@192.168.2.89>;tag=6b3e0000bf5c0000

Call-ID: fdfa416f8779a8701af1086b07879a65@192.168.2.89

CSeq: 1 INVITE

Contact: <sip:192.168.2.161:5060>

Content-Type: application/sdp

Allow: INVITE,ACK,OPTIONS,BYE,CANCEL,UPDATE,PRACK,REFER,SUBSCRIBE,NOTIFY,MESSAGE

Content-Length: 118

v=0

o=- 1 1 IN IP4 192.168.2.161

s=-

t=0 0

m=audio 19194 RTP/AVP 8

c=IN IP4 192.168.2.161

a
3)签权INVITE消息实例
5、ACK消息
1)头字段填写说明
必选头域如下:
Call-id
Cseq
From
To
Max-Forwords
Via
常用可选头域:
Content-Length
Content-Type
Route
2)消息实例
在“4、INVITE消息”中讲到了主叫方接收到INVITE消息的200 消息后,接着给主叫方发送ACK消息,消息参考如下:
192.168.2.89:14010 SIP/2.0

Via: SIP/2.0/UDP 192.168.2.161:9545

Max-Forwards: 70

From: "Administrator" <sip:17899998888@192.168.2.89>;tag=2dc6e1000081463ba14f7db4e50b8643;epid=d6b5434cef

To: <sip:01062230001@192.168.2.89>;tag=-006773-7d10081ef45af150

Call-ID: 31e72e80d5b04f52aba6cb8be8f3c0c0@192.168.2.161

CSeq: 1 ACK

User-Agent: RTC/1.2

Content
6、BYE消息
1)头字段填写说明
必选头域如下:
Call-id
Cseq
From
To
Max-Forwards
Via
常用可选头域:
Content-Length
Content-Type
Route
Reason
2)消息实例
本实例笔者在本机(192.168.2.161)上注册了17899998888号码,呼叫01062230001号码时发送INVITE消息给服务器(192.168.2.89)的软交换,并与呼叫的号码建立通话后,主叫方主动挂断时,BYE消息如下所示:
192.168.2.89:14010 SIP/2.0

Via: SIP/2.0/UDP 192.168.2.161:9545

Max-Forwards: 70

From: "Administrator" <sip:17899998888@192.168.2.89>;tag=2dc6e1000081463ba14f7db4e50b8643;epid=d6b5434cef

To: <sip:01062230001@192.168.2.89>;tag=-006773-7d10081ef45af150

Call-ID: 31e72e80d5b04f52aba6cb8be8f3c0c0@192.168.2.161

CSeq: 2 BYE

User-Agent: RTC/1.2

Content
服务器发送200 OK消息,参考实例如下:
2.0 200 OK

Via: SIP/2.0/UDP 192.168.2.161:9545

From: "Administrator" <sip:17899998888@192.168.2.89>;tag=2dc6e1000081463ba14f7db4e50b8643;epid=d6b5434cef

To: <sip:01062230001@192.168.2.89>;tag=-006773-7d10081ef45af150

Call-ID: 31e72e80d5b04f52aba6cb8be8f3c0c0@192.168.2.161

CSeq: 2 BYE

Content
7、PRACK消息
1)头字段填写说明
必选头域如下:
Call-id
Cseq
From
To
Max-Forwards
Via
RAck
常用可选头域:
Content-Type
Content-Length
2)消息实例
如下是PRACK消息的参考实例:
192.168.2.154:5060 SIP/2.0

CSeq: 2 PRACK

Call-ID: 0112114b0ca1d73c3fbdc7036e4672c8@huawei.com

Contact: <sip:01055554444@192.168.2.46>

Content-Length: 0

From: <sip:01055554444@192.168.2.154>;tag=6c789654

To: <sip:01062237400@192.168.2.154>;tag=0012-f1939f63004dbd16

Via: SIP/2.0/UDP 192.168.2.46;branch=z9hG4bK04982ba62

User-Agent: Huawei-MC820/1.0.0

Supported: 100rel

RAck: 1 1 INVITE
8、INFO消息
1)头字段填写说明
必选头域如下:
Call-id
Cseq
From
To
Max-Forwards
Via
常用可选头域:
Content-Type
Content-Length
Route
2)消息实例
在笔者开发过程中,媒体服务器与软交换服务器之间的使用的是INFO消息交互,如下消息为软交换服务器向媒体服务器发送的INFO消息(请求开始录音),参考如下:
192.168.2.89:14010 SIP/2.0

Call-ID: 52f3d02182b72d37c48cea5dd013a401@192.168.2.89

From: <sip:msml@minicc:5090>;tag=013913-74fa8415d2902b1c

To: <sip:as@cintel.net.cn>;tag=-00708-b879297623d39362

CSeq: 1 INFO

Via: SIP/2.0/UDP 192.168.2.89:5090;branch=z9hG4bKf06b482d

Max-Forwards: 30

Allow: INVITE,ACK,OPTIONS,BYE,CANCEL,REGISTER,INFO,UPDATE,PRACK,REFER,SUBSCRIBE,NOTIFY,MESSAGE

Contact: <sip:192.168.2.89:5090>

Content-Type: application/msml+xml

Content-Length: 164

<?xml version="1.0" encoding="US-ASCII"?>

<msml version="1.1">

<event name="app.startingRecord" id="conf:002221c6082350d233/dialog:PRLeg708">

</event>

</msml>
如下是媒体服务器回送的200 OK消息,消息参考如下:
2.0 200 OK

Via: SIP/2.0/UDP 192.168.2.89:5090;branch=z9hG4bKf06b482d

From: <sip:msml@minicc:5090>;tag=013913-74fa8415d2902b1c

To: <sip:as@cintel.net.cn>;tag=-00708-b879297623d39362

Call-ID: 52f3d02182b72d37c48cea5dd013a401@192.168.2.89

CSeq: 1 INFO

Allow: INVITE,ACK,OPTIONS,BYE,CANCEL,REGISTER,INFO,UPDATE,PRACK,REFER,SUBSCRIBE,NOTIFY,MESSAGE

Contact: <sip:192.168.2.89:14010>

Content
9、OPTIONS消息
1)头字段填写说明
必选头域如下:
Call-id
Cseq
From
To
Max-Forwords
Via
常用可选头域:
Accept
Allow
Supported
2)消息实例
参考实例如下所示:
user@carrier.com SIP/2.0

Via: SIP/2.0/UDP cavendish.kings.cambridge.edu.uk; branch=z0hG4bK1834

Max-Forwards: 70

To: <sip:user@proxy.carrier.com>

From: J.C. Maxwell <sip:james.maxwell@kings.cambridge.edu.uk>; tag=34

Call-ID: 9352812@cavendish.kings.cambridge.edu.uk

CSeq: 1 OPTIONS

Content
10、NOTIFY消息
参考消息实例如下所示:
@parlour.elasticity.co.uk SIP/2.0

Via SIP/2.0/UDP cartouche.rosettastone.org:5060; branch=z9hG4bK3841323

Max-Forwards: 70

To: Thomas Young <sip:tyoung@elasticity.co.uk>; tag=1814

From: <sip:ptolemy@rosettastone.org>; tag=5363956k

Call-ID: 452k59252058dkfj34924lk34

CSeq: 3 NOTIFY

Contact: <sip:Ptolemy@cartouche.rosettastone.org>

Event: dialog

Subscription-State: active

Allow-Event: dialog

Content-Type: application/xml + dialog

Content-Length: 消息体长度

(xml格式的消息体

)
11、REFER消息
参考消息实例如下所示:
@biuroszyfrow.pl SIP/2.0"

Via SIP/2.0/UDP lab34.bletchleypark.co.uk:5060; branch=z9hG4bK932039

Max-Forwards: 69

To: <sip:m.rejewski@biuroszyfrow.pl>; tag=ACEBDC

From: Alan Turing <sip:turing@bletchleypark.co.uk>; tag=213424

Call-ID: 3419fak3kFD23s1A9dkl

CSeq; 5412 REFER

Refer-To: <sip:info@scherbius-ritter.com>

Content
- 【转】windows常用消息大全(系统消息、通告消息、用户消息)
原文网址:http://blog.csdn.net/nupt123456789/article/details/7370562 附录A Windows 常用消息大全 表A-1 Windows消息分布 ...
- 完整的 HTML 4 + HTML 5 实体参考手册
1 完整的 HTML 4 + HTML 5 实体参考手册 http://www.runoob.com/charsets/html-charsets.html 1 下表中的所有实体都能在所有的浏览器中正 ...
- [C#菜鸟]C# Hook (三) Windows常用消息大全
表A-1 Windows消息分布 消息范围 说 明 0 - WM_USER – 1 系统消息 WM_USER - 0x7FFF 自定义窗口类整数消息 WM_APP - 0xBFFF 应用程序自定义消 ...
- [总结]jQuery之常用函数方法参考手册
w3school参考地址:http://www.w3school.com.cn/jquery/index.asp runoob参考地址:http://www.runoob.com/jquery/jqu ...
- Java基础知识笔记第八章:常用的实体类
String类 String类位于lang包下 java会默认导入lang包下的类,所以可以直接使用,注意String是final类所以不能有子类 构造String对象: 常量对象:String常量也 ...
- SendMessage函数的常用消息及其应用大全
来源:http://www.360doc.com/content/09/0814/10/19147_4907488.shtml,非常全面的解释. 文本框控件通常用于输入和编辑文字.它属于标准 Wind ...
- 1-3-2 Windows应用程序常用消息
主要内容:介绍Windows编程中常用的消息 1.WM_LBUTTONDOWN产生单击鼠标左键的消息 lParam: 低字节包含当前光标的X坐标值 X = LOWORD(lParam); 高字节包含当 ...
- Azure + vsftpd + ubntu14 + 虚拟用户 遇到的问题:从网上摘抄
:在Azure安装好ubuntu虚拟机,安装包选择ubuntu14.04 LTS,选择LTS,以便微软对其以后的更好支持,不选就可能技术支持不会很久,现只开一台,端口默认选择22 :打开虚拟机,进入端 ...
- PHP.7-HTML+CSS(一)-HTML语法、常用字符实体、颜色代码
HTML+CSS HTML是WEB页面的描述性语言,浏览器解释的语言 CSS则是为HTML制定样式的机制,为浏览器解释的语言.它不能独立使用,没有HTML就没有CSS,定义网页的外观和布局(字体.背景 ...
随机推荐
- (C++) LNK2019: unresolved external symbol.
Error 33 error LNK2019: unresolved external symbol "\xxx.obj yyy.Native 仔细看看错误信息,后来发现尽然是构造函数的一个 ...
- Thread.join简单介绍
百度了一下,终于明白了.这个解释最简单: 前提:join()方法肯定是被某个线程调用的. A线程正在执行,突然执行的时候碰到了B.join(), 那么,A线程就必须要等到B线程执行完之后才能执行. ...
- angular(3)服务 --注入---自定义模块--单页面应用
ng内部,一旦发生值改变操作,如$scope.m=x,就会自动轮询$digest队列,触发指定的$watch,调用其回调函数,然后修改dom树. 干货:https://github.com/xufei ...
- App.Config详解及读写操作
App.Config详解及读写操作 App.Config详解 应用程序配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的.它是可以按需要更改的,开发人员可以使用配置文件来更改设置,而 ...
- c++中的引用与指针的区别
http://blog.csdn.net/lyd_253261362/article/details/4323691 c++中的引用与指针的区别 ★ 相同点: 1. 都是地址的概念: 指针指向一块内存 ...
- (原)android4.2以后获取应用程序和缓存大小的方法(源码有改变)
以前获取应用的大小是用 PackageManager mPackageManager= getPackageManager(); try {Method getPackageSizeInfoMetho ...
- 【摘】crontab 各时间含义
HELL=/bin/bash <==使用哪種 shell 介面 PATH=/sbin:/bin:/usr/sbin:/usr/bin <==執行檔搜尋路徑 MAILTO=root < ...
- 问题解决_WCF_WCF 接收我服务的 HTTP 响应时发生错误
原文地址:http://www.cnblogs.com/tianma3798/p/5470974.html 错误内容: System.ServiceModel.CommunicationExcepti ...
- Latex感想
看人家,一个小女生,被导师逼着,首先对电脑方面理解不多,3天时间,latex已经把Paper框架建立起来,我可以说我自愧不如吗?德鲁克<卓有成效的管理者>说的一次干一件事情,<冬吴相 ...
- Node Server管理
停止服务 Ctrl+Z暂停 Ctrl+C: kill it 先找到process ID (second from the left), 再kill it:$ ps axu | grep node$ k ...