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

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

只支持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));

第五步:释放资源

1  //注意,使用完,记得释放,不然会有内存泄漏 
2 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);

第三步:发送数据

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

第四步:释放资源

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

发表评论

邮箱地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据