十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
路由吧!
成都创新互联,专注为中小企业提供官网建设、营销型网站制作、响应式网站开发、展示型成都做网站、成都网站设计等服务,帮助中小企业通过网站体现价值、有效益。帮助企业快速建站、解决网站建设与网站营销推广问题。
要解释路由器的概念,首先得知道什么是路由。所谓“路由”,是指把数据从一个地方传送到另一个地方的行为和动作,而路由器,正是执行这种行为动作的机器,它的英文名称为Router,是一种连接多个网络或网段的网络设备,它能将不同网络或网段之间的数据信息进行“翻译”,以使它们能够相互“读懂”对方的数据,从而构成一个更大的网络。 ;ID=89834
简单的讲,路由器主要有以下几种功能:
第一,网络互连,路由器支持各种局域网和广域网接口,主要用于互连局域网和广域网,实现不同网络互相通信;
第二,数据处理,提供包括分组过滤、分组转发、优先级、复用、加密、压缩和防火墙等功能;
第三,网络管理,路由器提供包括配置管理、性能管理、容错管理和流量控制等功能。
为了完成“路由”的工作,在路由器中保存着各种传输路径的相关数据--路由表(Routing Table),供路由选择时使用。路由表中保存着子网的标志信息、网上路由器的个数和下一个路由器的名字等内容。路由表可以是由系统管理员固定设置好的,也可以由系统动态修改,可以由路由器自动调整,也可以由主机控制。在路由器中涉及到两个有关地址的名字概念,那就是:静态路由表和动态路由表。由系统管理员事先设置好固定的路由表称之为静态(static)路由表,一般是在系统安装时就根据网络的配置情况预先设定的,它不会随未来网络结构的改变而改变。动态(Dynamic)路由表是路由器根据网络系统的运行情况而自动调整的路由表。路由器根据路由选择协议(Routing Protocol)提供的功能,自动学习和记忆网络运行情况,在需要时自动计算数据传输的最佳路径。
为了简单地说明路由器的工作原理,现在我们假设有这样一个简单的网络。
现在我们来看一下在如图所示网络环境下路由器又是如何发挥其路由、数据转发作用的。现假设网络A中一个用户A1要向C网络中的C3用户发送一个请求信号时,信号传递的步骤如下:
第1步:用户A1将目的用户C3的地址C3,连同数据信息以数据帧的形式通过集线器或交换机以广播的形式发送给同一网络中的所有节点,当路由器A5端口侦听到这个地址后,分析得知所发目的节点不是本网段的,需要路由转发,就把数据帧接收下来。
第2步:路由器A5端口接收到用户A1的数据帧后,先从报头中取出目的用户C3的IP地址,并根据路由表计算出发往用户C3的最佳路径。因为从分析得知到C3的网络ID号与路由器的C5网络ID号相同,所以由路由器的A5端口直接发向路由器的C5端口应是信号传递的最佳途经。
第3步:路由器的C5端口再次取出目的用户C3的IP地址,找出C3的IP地址中的主机ID号,如果在网络中有交换机则可先发给交换机,由交换机根据MAC地址表找出具体的网络节点位置;如果没有交换机设备则根据其IP地址中的主机ID直接把数据帧发送给用户C3,这样一个完整的数据通信转发过程也完成了。
从上面可以看出,不管网络有多么复杂,路由器其实所作的工作就是这么几步,所以整个路由器的工作原理基本都差不多。当然在实际的网络中还远比上图所示的要复杂许多,实际的步骤也不会像上述那么简单,但总的过程是这样的。
目前,生产路由器的厂商,国外主要有CISCO(思科)公司、北电网络等,国内厂商包括华为等。
我也不是很懂,但是我对你的问题感兴趣所以查了一下,就我所了解的是这样:
H264文件的主要部分,是一堆"NAL单元"(NALU),NALU的分隔符是0000 0001 或 0000 01
每个NALU的头部,会有一个字节来标示该NALU的类型
一帧会由一个Access Unit (AU)构成,一个AU是由多个连续的NALU组成。
有一种NALU的类型,代表字节为09,是AU的结尾符号。但是这个似乎不是强制的而是建议。如果使用了该标识符,每一帧都将由0000 0001 09 或 0000 0109结尾。
如果不使用该标识符,似乎要通过NALU的内容判断两个NALU是否属于同一帧。
部分我看的参考资料:
后面两个英文资料可能要翻墙也可能不要
附件是完整的H264的specification,这是英文的,我没找到中文的。第八章详细的描述了解码的规范。
不刷新页面更新数据,一般有两个方法实现,都离不开JAVASCRIPT。现在最流行的就是AJAX,是用JS脚本连接数据库更新数据,刷新页面部分区域内容,不刷新整个网页。另外一个是比较经典、但是兼容性更高的方法,设置一个隐藏的FRAME或者iFRAME帧,那个帧不断刷新PHP页面,页面内容为改变可见帧内容的JS。
完全可以的,php可以操作串口rs232的。
例子如下:
?php
// --------------------------------------------------------------------------
// File name : RS232_Server.php
// Description : RS232演示上位机程序
// Requirement : PHP 5.1.4 (cli) ()
//
// Copyright(C), HonestQiao, 2006, All Rights Reserved.
//
// Author: HonestQiao (honestqiao@hotmail.com/QQ:5601680)
//
// 程序简介:
// 本程序与RS232_Client构成一个完整的演示系统,展示了PHP在RS232串口通讯上的应用。
// 程序之中实现了一个基础但是完整的RS232通讯协议(HQB232),通讯协议格式如下:
// 协议内容:
// C-S 01 //请求通讯
// S-C 02 //响应通讯
// C-S LEN DATA //LEN表示数据(DATA)长度 DATA表示实际数据
// C-S 03 //结束通讯
// 说明:S表示上位机 C表示下位机
// HQB232表示HonestQiao演示的基础(Base)RS232通讯协议,包含了协议的
// 请求和响应,数据帧的结构。
// 演示过程为通讯的请求和响应,十次数据帧的发送, 通讯的结束
// 数据帧的结构为当前的序号,microtime(),随机字符串
//
// 欢迎探讨PHP在RS232串口通讯上的应用。
// --------------------------------------------------------------------------
set_time_limit(0);
exec('mode COM1: baud=115200 data=8 stop=1 parity=n xon=on');
$fd = dio_open('COM1:', O_RDWR);
if(!$fd)
{
die("Error when open COM1");
}
$ff = dio_stat($fd);print_r($ff);
echo "HQB232 SERVER is listenning on COM1\n";
/// read
$len = 2;
$t=0;while (($t++)1000)
{
$data = dio_read($fd, $len);
if ($data) {
if($data==chr(0).chr(1)){
echo "S_RECV:01\n";
echo "S_SEND:02\n";
dio_write($fd,chr(0).chr(2));
break;
}
}
}
/// read
$len = 2;
$t=0;while (($t++)1000)
{
$len = 2;
$data = dio_read($fd, $len);
if($data==chr(0).chr(3)){
echo "S_RECV:03\n";
break;
}
elseif ($data) {
$len = intval($data);
$data = dio_read($fd, $len);
if($data){
echo "S_RECV:($len)$data\n";
}
}
}
dio_close($fd);
?
PHP弱类型,存放数据的话是可以满足的。
?php
$x="我是帧头";
$y=321;
//todo可以对$z进行赋值
$z="我是数据balabala~";
$arr=array($x,$y,$z);
echo "帧头:".$arr[0]."br/";//输出帧头
echo "长度:".$arr[1]."br/";//输出长度
echo "数据:".$arr[2]."br/";//输出数据
var_dump($arr);//dump出来查看详细
?
输出结果:
帧头:我是帧头
长度:321
数据:我是数据balabala~
array(3) { [0]= string(8) "我是帧头" [1]= int(321) [2]= string(17) "我是数据balabala~" }
不好说,给你转个教程吧。后台的话还是要JS来调用。
Flash是可以轻松与网页交互数据的,不然为何Flash会有这么大的生命力呢?只是这样编程比较麻烦而已,又要调试Flash,然后又要放到服务器上调试。不过这样的方式能够收到很好的效果,Flash强大的绘图功能、图形功能,能够与网页的参数传递联系起来,配合后端的服务器语言,能够收到很大效果。
下面举个例子用ActionScript3.0来说明这个问题,如下图:
IE6效果:
火狐效果:
一旦浏览器装上Flash插件,Flash就能够轻松与网页互通消息。无论在任何浏览器,现在基本上用户都会装上Flash组件的,可以这样说,几乎就没有不装Flash组件的浏览器。
一、Flash部分
1、首先,新建一个ActionScript3.0的Flash,新建之后就保存为webPage.fla,这次的Flash无须这么大的尺寸,否则网页中会有很多的留白,设置大小为500x100px就可以了。播放器的版本按照默认就可以,因为用户的浏览器Flash组件会自动更新的。这个不用管。
2、通过窗口-组件,或者Ctrl+F7打开组件面板,利用自带的按钮、标签文本、输入框组件布置界面。
3、拖出如下的界面,设置各个组件的属性如下,设置其text值,也就是要显示的文字,为部分要控制的组件设置实例名称,也就是Id,比如按钮设置成Button1,输入框设置成EditField1,一会儿要给网页JavaScript控制的标签文本的text值清空,其实例名称为Label1。
4、之后点击第一帧,打开动作面板,或者点击F9,写入如下的代码:
[javascript] view plain copy print?
import flash.external.ExternalInterface;
flash.system.Security.allowDomain("*");
flash.system.Security.allowInsecureDomain("*");//设置允许所有网站都允许Flash与网页之间交互
Button1.addEventListener("click",function(){//点击Button1这个按钮
ExternalInterface.call("show",EditField1.text);
//则调用JavaScript中的function show(message){}函数,其中message这个参数值,由EditField1输入的东西填充
});
function JavaScriptShow1(message1){
//定义一个函数,一旦这个函数触发则把传来的值,填充Label1这个标签文本
Label1.text=message1;
}
ExternalInterface.addCallback("JavaScriptShow1",JavaScriptShow1);
//注册JavaScriptShow1这个函数,其对外名称为JavaScriptShow1,一般都应该相同的
//网页调用Flash对象的JavaScriptShow1的方法,则相当于调用ActionScript中的JavaScriptShow1(message1){}函数
import flash.external.ExternalInterface; flash.system.Security.allowDomain("*"); flash.system.Security.allowInsecureDomain("*");//设置允许所有网站都允许Flash与网页之间交互 Button1.addEventListener("click",function(){//点击Button1这个按钮 ExternalInterface.call("show",EditField1.text); //则调用JavaScript中的function show(message){}函数,其中message这个参数值,由EditField1输入的东西填充 }); function JavaScriptShow1(message1){ //定义一个函数,一旦这个函数触发则把传来的值,填充Label1这个标签文本 Label1.text=message1; } ExternalInterface.addCallback("JavaScriptShow1",JavaScriptShow1); //注册JavaScriptShow1这个函数,其对外名称为JavaScriptShow1,一般都应该相同的 //网页调用Flash对象的JavaScriptShow1的方法,则相当于调用ActionScript中的JavaScriptShow1(message1){}函数
5、此时Flash的部分完毕,选择文件-发布,打开Flash保存的文件夹。其实上面的内容比《【ActionScript】ActionScript3.0的Helloworld》(点击打开链接)没复杂多少,只是多了两句注册ActionScript与JavaScript的交互的语句而已。
二、网页的部分
1、之后,要把这个Flash布置到网页上。Flash发布之后,会在网页中生成两个东西一个html与一个swf,核心文件是.swf文件,html文件不能照搬的,只能借鉴其中的代码,否则不能兼容野狐禅、谷歌等浏览器。
这个由Flash生成webPage.html页面,可以借鉴的代码如下:
2、由于Flash禁用了Flash调用本地文件的功能。你只能把这个webPage.swf拷贝到你的服务器上调试。之后在服务器上新建一个.html的页面,这里以swf.html与webPage.swf同目录做例子,如果不同例子请自己设置好绝对路径,假设是swf.html,swf.html的HTML布局如下:
[html] view plain copy print?
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" ""
html xmlns="" lang="zh-CN" xml:lang="zh-CN"
head
titlewebPage/title
meta http-equiv="Content-Type" content="text/html; charset=utf-8" /
/head
body
Flash与网页交互
input type="text" id="text1" /
button onclick="toFlash()"发信息给Flash!/button
!--这段代码的部分可以在发布出来的html中截取--
div
object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="500" height="100" id="webPage" align="middle"!--这里的id是为了flash给IE系列浏览器控制--
!--对IE有效的代码--
param name="movie" value="webPage.swf" /!--为IE浏览器指明flash的路径--
param name="quality" value="high" /
param name="bgcolor" value="#ffffff" /
param name="play" value="true" /
param name="loop" value="true" /
param name="wmode" value="window" /
param name="scale" value="showall" /
param name="menu" value="true" /
param name="devicefont" value="false" /
param name="salign" value="" /
param name="allowScriptAccess" value="always" /!--这里一定要设置成always,打开Javascript与Actionscript的交互权限--
!--对野狐禅、谷歌等有效的代码--
embed src="webPage.swf" width="500" height="100" id="webPage"/embed!--这里的id是为了flash给野狐禅、谷歌等浏览器控制,src的值为野狐禅、谷歌等浏览器指明flash的路径--
/object
/div
/body
/html
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "" html xmlns="" xml:lang="zh-CN" head titlewebPage/title meta http-equiv="Content-Type" content="text/html; charset=utf-8" / /head body Flash与网页交互 input type="text" id="text1" / button onclick="toFlash()"发信息给Flash!/button !--这段代码的部分可以在发布出来的html中截取-- div object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="500" height="100" id="webPage"!--这里的id是为了flash给IE系列浏览器控制-- !--对IE有效的代码-- param name="movie" value="webPage.swf" /!--为IE浏览器指明flash的路径-- param name="quality" value="high" / param name="bgcolor" value="#ffffff" / param name="play" value="true" / param name="loop" value="true" / param name="wmode" value="window" / param name="scale" value="showall" / param name="menu" value="true" / param name="devicefont" value="false" / param name="salign" value="" / param name="allowScriptAccess" value="always" /!--这里一定要设置成always,打开Javascript与Actionscript的交互权限-- !--对野狐禅、谷歌等有效的代码-- embed src="webPage.swf" width="500" height="100" id="webPage"/embed!--这里的id是为了flash给野狐禅、谷歌等浏览器控制,src的值为野狐禅、谷歌等浏览器指明flash的路径-- /object /div /body /html
之后的JavaScript布局,是ActionScript与JavaScript交互的核心,代码如下:
[javascript] view plain copy print?
script type="text/javascript"
//给ActionScript所调用的JavaScript函数,message这个参数被ActionScript传递过来的值所填充
function show(message){
alert(message);
}
//获取Flash对象的函数,不同的对象有不同的方法。为了兼容,只能这样写。
function getFlash(movieName){
if (window.document[movieName]) {
window.document[movieName];
}
if (navigator.appName.indexOf("Microsoft Internet") == -1) {
if (document.embeds document.embeds[movieName])
return document.embeds[movieName];
}
else {
return document.getElementById(movieName);
}
}
//获取Flash对象
var flash1 = getFlash('webPage');
//JavaScript调用ActionScript中注册为JavaScriptShow1的函数
function toFlash(){
var text1 = document.getElementById("text1").value;
flash1.JavaScriptShow1(text1);
}
/script
script type="text/javascript" //给ActionScript所调用的JavaScript函数,message这个参数被ActionScript传递过来的值所填充 function show(message){ alert(message); } //获取Flash对象的函数,不同的对象有不同的方法。为了兼容,只能这样写。 function getFlash(movieName){ if (window.document[movieName]) { window.document[movieName]; } if (navigator.appName.indexOf("Microsoft Internet") == -1) { if (document.embeds document.embeds[movieName]) return document.embeds[movieName]; } else { return document.getElementById(movieName); } } //获取Flash对象 var flash1 = getFlash('webPage'); //JavaScript调用ActionScript中注册为JavaScriptShow1的函数 function toFlash(){ var text1 = document.getElementById("text1").value; flash1.JavaScriptShow1(text1); } /script
三、总结
综上所述,webPage.swf与swf.html的交互如下图: