netty实现动态socket通信(基于C井net4.5websocket客户端与服务端)

只支持win8以上系统以及windows server2012以上系统最近在研究视频传输给浏览器,然后使用H5标签解码视频流采用websocket传输所以研究了一下C#的websocket,我来为大家科普一下关于netty实现动态socket通信?下面希望有你要的答案,我们一起来看看吧!

netty实现动态socket通信(基于C井net4.5websocket客户端与服务端)

netty实现动态socket通信

只支持win8以上系统以及windows server2012以上系统

最近在研究视频传输给浏览器,然后使用H5标签解码。视频流采用websocket传输。所以研究了一下C#的websocket。

首先使用HttpListener进行侦听,HttpListener监听需要启动管理员权限才能运行,或者注册该端口,注册如下:

已管理员身份运行cmd.exe 输入下面两个命令

netsh http delete urlacl url=http://127.0.0.1:8080/

netsh http add urlacl url=http://127.0.0.1:8080/ user=dell

*******************websocket服务端****************************************

第一步:创建HttpListener类,并启动监听:

var listener = new HttpListener(); listener.Prefixes.Add("http://10.10.13.140:8080/"); listener.Start();

第二步:等待连接

var context = listener.GetContext();

第三步:接收websocket

var wsContext = await context.AcceptWebSocketAsync(null); var ws = wsContext.WebSocket; Console.WriteLine("WebSocket connect");

第四步:开始异步接收数据

//接收数据 var wsdata = await ws.ReceiveAsync(abuf, cancel); Console.WriteLine(wsdata.Count); byte[] bRec = new byte[wsdata.Count]; Array.Copy(buf, bRec, wsdata.Count); Console.WriteLine(Encoding.Default.GetString(bRec));

第五步:释放资源

//注意,使用完,记得释放,不然会有内存泄漏 ws.Dispose();

*******************websocket客户端****************************************

这里使用ClientWebSocket类进行

第一步:创建ClientWebSocket

ClientWebSocket webSocket = new ClientWebSocket();

第二步:建立websocket连接

await webSocket.ConnectAsync(new Uri("ws://10.10.13.140:8080/"), cancellation); Console.WriteLine(111);

第三步:发送数据

//发送数据 await webSocket.SendAsync(new ArraySegment<byte>(bsend), WebSocketMessageType.Binary, true, cancellation); await webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, "1", cancellation);

第四步:释放资源

//释放资源 webSocket.Dispose();

为了方便大家学习,整理了一下服务端和客户端的代码,采用C# net4.5 vs2017开发环境

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页