tft每日頭條

 > 科技

 > netty實現動态socket通信

netty實現動态socket通信

科技 更新时间:2025-01-20 00:25:49

netty實現動态socket通信?隻支持win8以上系統以及windows server2012以上系統最近在研究視頻傳輸給浏覽器,然後使用H5标簽解碼視頻流采用websocket傳輸所以研究了一下C#的websocket,我來為大家科普一下關于netty實現動态socket通信?下面希望有你要的答案,我們一起來看看吧!

netty實現動态socket通信(基于C井net4.5websocket客戶端與服務端)1

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開發環境

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved