基于C#net4.5websocket客户端与服务端

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

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

已管理员身份运行cmd.exe 输入下面两个命令
netsh http delete urlacl url=http://10.10.13.140:8080/

netsh http add urlacl url=http://10.10.13.140: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开发环境

连接如下:

点击打开链接




猜你喜欢

转载自blog.csdn.net/g0415shenw/article/details/80365554
今日推荐