public class DataReadWrite { public TcpClient client; public NetworkStream netStream = client.GetStream(); DataRead dr = new DataRead(netStream, client.ReceiveBufferSize);// client.ReceiveBufferSize接收缓冲区的大小 netStream.BeginRead(dr.msg, 0, dr.msg.Length, new AsyncCallback , client.ReceiveBufferSize);//此处有些不妥,可参照服务端的做法 netStream.BeginRead(dr.msg, 0, dr.msg.Length (bytesdata, 0, bytesdata.Length, new AsyncCallback(sendCallBack), netStream); netStream.Flush
一、netstream “NetStream NetStream技术应用背景Internet的高速发展为用户提供了更高的带宽,支持的业务和应用日渐增多,传统流量统计如SNMP、端口镜像等,由于统计流量方式不灵活或是需要投资专用服务器成本高等原因 NetStream技术是一种基于网络流信息的统计技术,可以对网络中的业务流量情况进行统计和分析。在网络的接入层、汇聚层、核心层上,都可以通过部署NetStream。 NetStream技术的应用有以下几种。 l 计费:NetStream为基于资源(如线路、带宽、时段等)占用情况的计费提供了精细的数据。 NetStream简介 NetStream流定义 NetStream是一项基于“流”来提供报文统计的技术。 NetStream流 NetStream是一项基于“流”来提供报文统计的技术,NetStream流就是IP报文(UDP、TCP、ICMP报文)。
=new NetStream(_netConn); _netStream.bufferTime = 5; wVideo.attachNetStream(_netStream); _netStream.play = MetaDataHandler; _netStream.client=_client; //注册监听事件 _netStream.addEventListener(NetStatusEvent.NET_STATUS _netStream.pause(); } //Stop按钮点击事件 function btnStopMouseClick(e:MouseEvent) { _netStream.pause(); silderVideo.Value = _netStream.time/_duration; } if (_netStream.bytesLoaded>0){ silderVideo.LoadingValue = _netStream.bytesLoaded / _netStream.bytesTotal; } //trace(_netStream.bytesLoaded + "/" + _netStream.bytesTotal
string strDateLine=DateTime.Now.ToShortDateString()+" "+DateTime.Now.ToLongTimeString();//得到发送时客户端时间 netStream =tcpClient.GetStream();//得到网络流 sw=new StreamWriter(netStream);//创建TextWriter,向流中写字符 string words 待发送的话 string content=strDateLine+words;//待发送内容 sw.Write(content);//写入流 sw.Close();//关闭流写入器 netStream.Close (true)//进入无限循环等待用户端连接 { try { tcpClient=serverListener.AcceptTcpClient();//创建客户端连接对象 netStream =tcpClient.GetStream();//得到网络流 sr=new StreamReader(netStream);//流读写器 } catch(Exception re)
播放 播放分成3步: (1)建立NetConnection (2)建立NetStream (3)调用NetStream的play()方法 前2步分别建立了RTMP规范中的两个逻辑结构:NetConnection 和NetStream。 NetStream代表了发送多媒体数据的通道。服务器和客户端之间只能建立一个NetConnection,但是基于该连接可以创建很多NetStream。这两个结构的结构如下图所示。 ? 从图中可以看出,推送RTMP的流程和播放有些类似,最主要的不同在于推送最后调用的是NetStream的publish()方法,而播放最后调用的是NetStream的play()方法。 推流分成4步: (1)建立NetConnection (2)建立NetStream (3)绑定摄像头和麦克风 (4)调用NetStream的play()方法 推流程序开始运行后,可以通过ffplay,VLC
_nsPublish == null) { //trace("重新创建ns"); _nsPublish = new NetStream(this. " || e.info.code == "NetStream.Play.Failed" || e.info.code == "NetStream.Publish.BadName") { this || e.info.code == "NetStream.Buffer.Empty") { //录制开始 this. " || e.info.code == "NetStream.Play.Failed") { } else if (e.info.code=="NetStream.Play.Start _nsPlay = new NetStream(this._ncPlay); this.
创建一个NetStream对象,它的作用是通过netconnection对象提供的连接,打开FLASH player 与服务器的单向流连接 3. flash.events.AsyncErrorEvent; import flash.media.Video; import flash.net.NetConnection; import flash.net.NetStream public function myvideo() { var nc:NetConnection = new NetConnection(); nc.connect(null); var ns:NetStream = new NetStream(nc); ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR,asyncErrorHandle); ns.play("1 = new NetStream(nc); ns.addEventListener(AsyncErrorEvent.ASYNC_ERROR,asyncErrorHandle); ns.client
实现flash直播需要三个重要的类,netconnection,netstream和video。 NetConnection 类在客户端和服务器之间创建双向连接。 使用 NetStream 通过该连接发送媒体流和数据 调用 NetConnection.connect() 会执行下列操作: • 传递“null”会从本地文件系统或 Web 服务器播放视频和 NetStream 类通过 NetConnection 打开了一个单向流通道。 • 调用 NetStream.play(),从本地磁盘、Web 服务器或 Flash Media Server 播放媒体文件。 • 调用 NetStream.appendBytes(),将 ByteArray 数据传入 NetStream。
实现flash直播需要三个重要的类,netconnection,netstream和video。 NetConnection 类在客户端和服务器之间创建双向连接。 使用 NetStream 通过该连接发送媒体流和数据 调用 NetConnection.connect() 会执行下列操作: ? NetStream 类通过 NetConnection 打开了一个单向流通道。 ? 调用 NetStream.play(),从本地磁盘、Web 服务器或 Flash Media Server 播放媒体文件。 ? 调用 NetStream.appendBytes(),将 ByteArray 数据传入 NetStream。
SocketTcp _instance; //TCPClient private TcpClient _tcpClient; private NetworkStream _netStream tcpClient.ReceiveBufferSize = 8192; _tcpClient.SendBufferSize = 8192; _netStream ) { Byte[] sendBytes = Encoding.UTF8.GetBytes(msg); _netStream.Write (sendBytes, 0, sendBytes.Length); _netStream.Flush(); } } ; TransData transData = (TransData)ar.AsyncState; try { recv = _netStream.EndRead
Video; var intervalId:uint; var intelvalTimes:uint=0; var isWorked=false; var nc:NetConnection; var ns:NetStream StatusEvent.STATUS, statusHandler); cam.addEventListener(ActivityEvent.ACTIVITY,camActivityHandler); ns=new NetStream (nc); ns.attachCamera(cam); } } Client.fla关键代码: var nc:NetConnection; var ns:NetStream; var vod:Video ns=new NetStream(nc); ns.addEventListener(NetStatusEvent.NET_STATUS,nsNetStatusHandler); ns.play(
黑木崖的辟邪剑法也对外宣称三大绝学:IP包分片重组、包守恒算法和Netstream。 原来,辟邪剑法脱胎自葵花宝典,而交换机的这三大特性,本质上也是精简版本的路由器特性。 最后一个所谓的绝学是NetStream。 NetStream本质上是基于自定义模板,提取报文字段并进行统计分析的功能。 而对于高精度统计、诊断丢包等需求,NetStream的采样率和实时性仍然不够。我们更需要的是INT这样的深入交换芯片内部,颗粒度细化到各队列缓存使用量的诊断手段,以及全局大数据分析手段来定位问题。 事实上,在大规模园区与数据中心网络内部,NetStream使用极少。该特性主要用于基于Segment Routing的SDWAN中,流量的采集监控。因此,这个特性引入局域网络,几乎没有任何实用价值。
建立一个网络流(NetStream)。网络流代表了发送多媒体数据的通道。这是一个逻辑连接,有点像 http协义中的 session。 播放流。 建立网络流(NetStream) 客户端发送消息“创建流”(createStream)到服务器端。 服务器端接收到“创建流”命令后,发送“结果”消息,通知客户端流的状态。 ? 服务器收到"播放"消息后,发送消息“响应状态” NetStream.Play.Start & NetStream.Play.reset,告知客户端“播放”命令执行成功。
说明:streamBegin wireshark过滤条件 rtmpt.ucm.eventtype == 0x00 客户端成功发送play请求后,服务端向客户端发送onStatus命令消息NetStream.Play.Start 和 NetStream.Play.Reset消息。 其中NetStream.Play.Reset消息只有在客户端发送play消息的时候设置了reset标志的时候才会发。 如果客户端请求播放的流不存在,服务端会返回onStatus命令消息NetStream.Play.StreamNotFound。 对于play命令的请求,回应的level为status,code为NetStream.Play.Start,desription为Start live。
::slotPushStream(QString address){LOG4CPLUS_INFO(MyLog::getInstance()->logger, "Push Net Stream");g_NetStream //重写重绘函数void VideoWidget::paintEvent(QPaintEvent *e){if (g_NetStream == 1){QPainter painter;//显示网络流painter.begin
等待有人请求,这个是男女生通讯的通道 Console.WriteLine("请求来了"); using (NetworkStream netStream = new NetworkStream(socket))//接收套接字 using (StreamReader reader = new StreamReader(netStream serverSocket.Accept())//等待有人请求,这个是男女生通讯的通道 { using(NetworkStream netStream =new NetworkStream(socket))//接收套接字 using(StreamReader reader=new StreamReader(netStream
DnsEndPoint("127.0.0.1", 80));//连接服务器的ip地址,端口号 //写入套接字 using (NetworkStream netstream = new NetworkStream(socket)) using (StreamWriter writer = new StreamWriter(netstream)) writer.WriteLine();//空行表示,指令结束 } //读取套接字 using (NetworkStream netstream = new NetworkStream(socket)) using (StreamReader reader = new StreamReader(netstream))
NetStream命令 NetStream定义了流式音频,视频和数据消息可以通过将客户端连接到服务器的NetConnection流动的通道。 如果客户端发送的播放命令成功了,则服务器发送onStatus命令消息NetStream.Play.Start和NetStream.Play.Reset。 deleteStream 当NetStream对象被破坏时,NetStream发送deleteStream命令。 从客户端到服务器的命令结构如下所示: ! 如果Bool Flag设置为true,则服务器会使用状态消息NetStream.Seek.Notify和NetStream.Play.Start作为响应。 如果Bool Flag设置为true,则服务器会使用状态消息NetStream.Seek.Notify和NetStream.Play.Start作为响应。
接收到播放命令后,服务器发送设置块大小(ChunkSize)协议消息给客户端 服务器发送“stream begin”给客户端,告诉客户端流的id 播放命令成功的话,服务器发送命令消息中的“响应状态” NetStream.Play.Start & NetStream.Play.Reset,告知客户端“播放”命令执行成功 服务器发送客户端要播放的音频和视频数据
一个 NetConnection 对象支持多个 NetStream 数据流。 5、如客户端请求的 play 命令成功执行后,服务器发送一条 onStatus 命令消息 NetStream.Play.Start 和 NetStream.Play.Reset。 需要销毁 NetStream 会发送 deleteStream 命令。 如 receiveVideo 命令中 Bool 标志为 false 时,服务器不进行任何响应;如该标志为 true,服务器会响应 NetStream.Seek.Notify 和 NetStream.Play.Start 操作成功后,如流为停止状态,服务器响应一条状态消息 NetStream.Pause.Notify;如流为播放状态,则返回 NetStream.UnPause.Notify。