只支持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://*:9999/ user=Everyone listen=yes

查看已经加载的url  :netsh http show urlacl

*******************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开发环境

连接如下:

点击打开链接

*************--------------备注---------------******************************************

发现win7下无法运行,参考

https://msdn.microsoft.com/en-us/library/system.net.websockets.clientwebsocket(v=vs.110).aspx

关键部分如下:

Some of the classes and class elements in the System.Net.WebSockets namespace are supported on Windows 7, Windows Vista SP2, and Windows Server 2008. However, the only public implementations of client and server WebSockets are supported on Windows 8 and Windows Server 2012. The class elements in the System.Net.WebSockets namespace that are supported on Windows 7, Windows Vista SP2, and Windows Server 2008 are abstract class elements. This allows an application developer to inherit and extend these abstract class classes and class elements with an actual implementation of client WebSockets.

基于C#net4.5websocket客户端与服务端相关推荐

  1. socket java 客户端_Java基于socket实现的客户端和服务端通信功能完整实例

    本文实例讲述了Java基于socket实现的客户端和服务端通信功能.分享给大家供大家参考,具体如下: 以下代码参考马士兵的聊天项目,先运行ChatServer.java实现端口监听,然后再运行Chat ...

  2. 【学习笔记】在windows下进行基于TCP的本地客户端和服务端socket通信

    文章目录 socket介绍 java中使用socket 基于tcp的socket通信 使用ServerSocket类创建一个web服务器:(java) windows下的基于tcp的socket编程( ...

  3. 基于RSocket协议实现客户端与服务端通信

    RSocket基础开发demo package com.pshdhx.rsocket;import io.rsocket.Payload; import io.rsocket.RSocket; imp ...

  4. java网络编程作业基于UDP简单聊天窗口,图形化界面,包含客户端和服务端

    //郑州轻工业大学 //题号:实验四 第二题 //题目:使用基于UDP的网络编程方法,完成客户端和服务器间的聊天功能.要求图形界面. java网络编程作业 基于UDP简单聊天窗口,图形化界面,包含客户 ...

  5. php winform通信,C# Winform 通过Socket实现客户端和服务端TCP通信

    操作界面如下: 1.声明Socket 第一个参数:寻址方式,第二个参数:传输数据的方式,第三个参数:通信协议 Socket socket = new Socket(AddressFamily.Inte ...

  6. twisted:基于python的twisted框架编写一个客户端和服务端的对话聊天空间

    twisted:基于python的twisted框架编写一个客户端和服务端的对话聊天空间 目录 输出结果 实现代码 输出结果 更新-- 实现代码 #基于python的twisted框架编写一个简单的聊 ...

  7. php cannot bind port to socket,PHP基于socket实现客户端和服务端通讯功能

    本文主要介绍了PHP基于socket实现的简单客户端和服务端通讯功能,可实现服务端接收客户端发送的字符串进行翻转操作后返回客户端的功能,需要的朋友可以参考下 服务端: set_time_limit(0 ...

  8. 2. ZK客户端与服务端建立连接的过程(基于NIO)

    ZK客户端与服务端建立连接的过程 引例 1. 启动SendThread 2. 状态初始化 3. 开始连接 4. 处理服务端连接响应 5. 流程图 在上一篇<客户端启动源码分析>文章中讲到了 ...

  9. 基于Socket实现客户端与服务端通讯

    基于Socket实现客户端与服务端通讯 socket 概述 Socket,套接字就是两台主机之间逻辑连接的端点.TCP/IP协议是传输层协议,主要解决数据如何 在网络中传输,而HTTP是应用层协议,主 ...

最新文章

  1. boost::transpose_graph用法的测试程序
  2. 解决: Your ApplicationContext is unlikely to start due to a @ComponentScan of the default
  3. 菜鸟数据科学家五大误区
  4. 信息奥赛一本通的递推练习
  5. WPF触发器(Trigger)
  6. 实操案例:字符串哈希表操作
  7. 优达学城深度学习之三(下)——卷积神经网络
  8. POI2001 Gold mine(二叉排序树 黑书经典)
  9. 第三步_安装jdk环境
  10. Python + 大数据-Python 学习(一)
  11. zotero无法同步caj文件 attachments skipped because they are top-level items, file does not exist
  12. Flume防止重复消费——断点续传
  13. OceanBase发布“珊瑚计划”,让合作伙伴成为OceanBase成功的关键
  14. 如何注册网站域名?需要注意哪些事项?
  15. mes都支持opc服务器吗,OPC UA 和MES是什么关系
  16. 腾讯、字节、蘑菇街、阿里实习生面经(面试记录)(2)
  17. 点餐小程序系统/基于微信小程序的点餐系统/点餐平台网站
  18. Python线程 一
  19. 社区计算机义务维修策划书,义务维修电脑策划书.doc
  20. ros机器人标定线速度与角速度

热门文章

  1. 简单的用堆栈实现的表达式计算
  2. 路由映射-route-map之一路由再发布
  3. matlab工具箱使用50hz低通滤波器设计 和FFT 变化截取50hz工频信号幅值
  4. halcon学习之颜色与纹理
  5. bat调用ant_bat调用ant_Ant调用批处理文件编译VS2005程序
  6. form表单会跨域_我的Vue不小心跨域了o()o 干它
  7. if condition 大于_西门子进一步扩展Sinumerik Edge 平台的应用程序AnalyzeMyMachine/Condition...
  8. mysql服务重启后不见了_太狗血!翔安已婚男出轨KTV服务员,致其怀孕后避而不见!情人上门讨要说法后原配妻子也......
  9. rest_framework-序列化-总结完结篇
  10. springcloud- FeginClient 调用统一拦截添加请求头 RequestInterceptor ,被调用服务获取请求头...