广告
返回顶部
首页 > 资讯 > 精选 >C#的Websocket怎么连接实现wss协议
  • 801
分享到

C#的Websocket怎么连接实现wss协议

2023-06-30 16:06:34 801人浏览 薄情痞子
摘要

本篇内容主要讲解“C#的websocket怎么连接实现wss协议”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#的WEBSocket怎么连接实现wss协议”吧!一、什么是Websocket?W

本篇内容主要讲解“C#websocket怎么连接实现wss协议”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#的WEBSocket怎么连接实现wss协议”吧!

    一、什么是Websocket?

    WebSocket是HTML5下一种新的协议(websocket协议本质上是一个基于tcp的协议)
    2.它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的
    3.Websocket是一个持久化的协议

    二、Websocket、Socket、HttpMQtt之间的区别?

    Socket:

    Socket是对tcp/ip协议族的封装的接口,Socket连接可以指定不同的传输层协议,即TCP或UDP,由于它是基于tcp/ip的,所以一般用在局域网内通信。

    WebSocket:

    WebSocket协议是基于TCP的一种新的网络协议,和http协议一样属于应用层协议,是一种让客户端和服务器之间能进行双向实时通信(全双工)的技术,且支持长连接,可以进行互联网间通信。引入ws和wss分别代表明文和密文的websocket协议,且默认端口使用80或443,几乎与http一致,WebSocket也要有一个握手过程,然后才能正式收发数据,由于数据包头部协议较小,不同于http每次请求需要携带完整的头部,所以网络开销比较少,长连接也让延迟明显更少(不需要重复新建连接)。

    MQtT:

    MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性:
    1.使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合;
    2.对负载内容屏蔽的消息传输;
    3.使用 TCP/IP 提供网络连接;

    HTTP:

    HTTP是一个属于应用层的,基于TCP/IP通信协议来传递数据(html 文件, 图片文件, 查询结果等)。

    通信方式:

    浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送请求。Web服务器根据接收到的请求后,向客户端发送响应信息。
    2.HTTP之请求消息Request:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成。
    3.HTTP之响应消息Response:HTTP响应也由四个部分组成,分别是:状态行、消息报头、空行和响应正文。
    若connection 模式为close,则服务器会主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;

    三、WS和WSS协议

    WS协议和WSS协议两个均是WebSocket协议的SCHEM,两者一个是非安全的,一个是安全的。也是统一的资源标志符。就好比HTTP协议和https协议的差别。非安全的没有证书,安全的需要SSL证书。(SSL是Netscape所研发,用来保障网络中数据传输的安全性,主要是运用数据加密的技术,能够避免数据在传输过程被不被窃取或者监听。)其中WSS表示在TLS之上的WebSocket。WS一般默认是80端口,而WSS默认是443端口,大多数网站用的就是80和433端口。(在高防防护过程中,80和433端口的网站是需要备案才可以接入国内的。)当然网站也会有别的端口,这种如果做高防是方案是可以用海外高防的。WS和WSS的体现形式分别是TCP+WS AS WS ,TCP+TLS+WS AS WS。服务器网址就是 URL。最后墨者安全再说下WebSocket协议的特点:建立在 TCP 协议之上,服务端实现容易;与 HTTP 协议有良好的兼容性,握手时不容易被屏蔽,可以通过各种 HTTP 代理服务器;数据轻量,实时通讯;可以发送文本和二进制数据。不限制同源,客户端可以与任意服务器端进行通讯。因此WebSocket协议的出现,为很多人解决了关于扩展以及兼容性协议的烦恼问题。

    WSS连接:由于wss是基于SSL,所以需要进行双向验证,客户端连接服务端时,我需要添加证书(服务端不验证可以不添加),服务端进行验证。注意:客户也需要对服务端进行验证,所以需要添加服务端证书回调,进行验证,这是很多人忽视,所以出现无法连接远程服务器,TLS/SSL验证失败的提示。

            public MainWindow()        {            InitializeComponent();            RemoteCertificateValidationCallback remote = ValidateServerCertificate;            ServicePointManager.ServerCertificateValidationCallback = remote;        }        /// <summary>        /// 服务端验证        /// </summary>        /// <param name="sender"></param>        /// <param name="certificate"></param>        /// <param name="chain"></param>        /// <param name="sslPolicyErrors"></param>        /// <returns></returns>        public bool ValidateServerCertificate( object sender,X509Certificate certificate,X509Chain chain,SslPolicyErrors sslPolicyErrors)        {            return   true ;        }                /// <summary>        /// WebSocket客户端连接        /// </summary>        /// <param name="param"></param>        /// <returns></returns>        public async Task Connect()        {            CancellationTokenSource t = new CancellationTokenSource();            try            {                client.Options.SetRequestHeader("key", "value");                X509Certificate2 cert = new X509Certificate2("xxx.cert");                client.Options.ClientCertificates.Add(cert);                Uri uri = new Uri("wss://xxxxxx");                //var config=new ServerConfig                await client.ConnectAsync(uri, t.Token);                Thread.Sleep(300);                Console.WriteLine($"链接websocket:[{uri}] 完成");                Task s1 = new Task(Receive, t, t.Token, TaskCreationOptions.LongRunning);                s1.Start();                token = t;                Console.WriteLine("Send Hello");            }            catch (Exception ex)            {                Console.WriteLine($"链接websocket:[{uri}] 失败", ex.Message);             }        }        /// <summary>        /// Websocket接收        /// </summary>        /// <param name="obj"></param>        private void Receive(object obj)        {            CancellationTokenSource ts = obj as CancellationTokenSource;            byte[] bs = new byte[1024];            while (!ts.Token.IsCancellationRequested)            {                try                {                    ArraySegment<byte> buff = new ArraySegment<byte>(bs, 0, bs.Length);                    Task<WebSocketReceiveResult> res = client.ReceiveAsync(buff, ts.Token);                    res.Wait();                    if (ts.Token.IsCancellationRequested)                    {                        return;                    }                    if (WebSocketCloseStatus.NORMalClosure == res.Result.CloseStatus)                    {                        Console.WriteLine($"websocket:与服务器断开链接:{res.Result.CloseStatus} --> Desc :{res.Result.CloseStatusDescription}");                        ts.Cancel();                        return;                    }                    string strData = encod.GetString(bs, 0, res.Result.Count);                    Console.WriteLine(strData);                    WsMsg msg = WsMsg.Deserialize(strData);                }                catch (Exception ex)                {                    Console.WriteLine("解析或执行 websocket:命令失败", ex);                }            }        }

    到此,相信大家对“C#的Websocket怎么连接实现wss协议”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

    --结束END--

    本文标题: C#的Websocket怎么连接实现wss协议

    本文链接: https://www.lsjlt.com/news/330145.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • C#Websocket连接实现wss协议
      目录一、什么是Websocket?二、Websocket、Socket、Http、Mqtt之间的区别?Socket:WebSocket:MQTT:HTTP:三、WS和WSS协议一、什...
      99+
      2022-11-13
    • C#的Websocket怎么连接实现wss协议
      本篇内容主要讲解“C#的Websocket怎么连接实现wss协议”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#的Websocket怎么连接实现wss协议”吧!一、什么是Websocket?W...
      99+
      2023-06-30
    • HTML5中WebSocket协议的实现原理是什么
      这篇文章将为大家详细讲解有关HTML5中WebSocket协议的实现原理是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。WebSocket协议的目的是为了工作于现有的网络基础设施。作为这...
      99+
      2023-06-09
    • python中怎么用socket实现协议TCP长连接框架
      这篇文章主要介绍“python中怎么用socket实现协议TCP长连接框架”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“python中怎么用socket实现协议TCP长连接框架”文章能帮助大家解决问...
      99+
      2023-06-29
    • C#怎么使用Twain协议实现扫描仪连续扫描功能
      本篇内容主要讲解“C#怎么使用Twain协议实现扫描仪连续扫描功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#怎么使用Twain协议实现扫描仪连续扫描功能”吧!C#调用Twain接口实现扫...
      99+
      2023-06-26
    • WebSocket中怎么利用OkHttp实现长连接
      WebSocket中怎么利用OkHttp实现长连接,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。WebSocket介绍先简单介绍下WebSoc...
      99+
      2022-10-19
    • C#中的协变与逆变接口怎么实现
      今天小编给大家分享一下C#中的协变与逆变接口怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。协变协变概念令人费解,多半...
      99+
      2023-07-05
    • 云服务器怎么连接本地数据库使用的协议
      使用协议 云服务器使用的协议有很多种,常见的有HTTP、FTP、NFS、Cloudflare等。不同的协议具有不同的特点和优势。 HTTP协议是一种简单、高效的网络协议,适用于HTTP连接。用户可以通过HTTP协议访问云服务器上的文件...
      99+
      2023-10-28
      协议 服务器 数据库
    • C++怎么实现数据库连接池
      本文小编为大家详细介绍“C++怎么实现数据库连接池”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++怎么实现数据库连接池”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。项目背景为了提高Mysql数据库的访问瓶颈...
      99+
      2023-07-05
    • C#泛型接口的协变和逆变怎么实现
      本文小编为大家详细介绍“C#泛型接口的协变和逆变怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#泛型接口的协变和逆变怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1、什么是协变、逆变?假设:T...
      99+
      2023-06-29
    • 微信小程序中怎么使用WebSocket实现长连接
      这篇文章主要讲解了“微信小程序中怎么使用WebSocket实现长连接”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“微信小程序中怎么使用WebSocket实现长连接”吧!项目使用的技术栈数据请...
      99+
      2023-06-26
    • Redis中通信协议RESP是怎么实现的
      这篇文章主要介绍了Redis中通信协议RESP是怎么实现的,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。RESPRESP(Redis Ser...
      99+
      2022-10-19
    • .NET编程——利用C#实现TCP协议的异步通信Socket套接字(WinForm)
      本文将介绍利用基于TCP通信协议的Socket实现服务器与客户端之间的数据传输。 目录 前言 计算机通信 创建服务器 服务器通信 创建客户端 客户端通信 前言         TCP/IP(Transmission Control Pr...
      99+
      2023-09-04
      tcp/ip c# mysql 服务器
    • 云服务器怎么连接本地数据库使用的协议有哪些
      首先,本地数据库是一种常见的本地文件存储服务。在这种情况下,用户需要使用特定的协议来连接本地数据库。常见的本地数据库协议包括MySQL、PostgreSQL和MongoDB等。 其次,使用云服务器连接本地数据库需要考虑以下几个因素: 安...
      99+
      2023-10-27
      协议 数据库 服务器
    • C#中的协变与逆变怎么实现
      本篇内容介绍了“C#中的协变与逆变怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言在C#编程中,由于存在类型之间的强制转换,很容易...
      99+
      2023-06-29
    • SQL的表连接怎么实现
      这篇“SQL的表连接怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SQL的表连接怎...
      99+
      2022-10-19
    • C#中怎么实现服务端与客户端连接
      这篇文章将为大家详细讲解有关C#中怎么实现服务端与客户端连接,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C#服务端与客户端连接实现实例:class Client {&n...
      99+
      2023-06-17
    • JS怎么实现基于websocket的多端桥接平台
      这篇文章给大家分享的是有关JS怎么实现基于websocket的多端桥接平台的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1. 要调试什么我们主要要知道调试什么,最终回去到什么样子的结果:调试接口,传入接口地址,即...
      99+
      2023-06-15
    • C#怎么实现连接电子秤串口自动称重
      本篇内容主要讲解“C#怎么实现连接电子秤串口自动称重”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#怎么实现连接电子秤串口自动称重”吧!一、界面设计二、核心代码  &nbs...
      99+
      2023-06-30
    • 怎么基于Kotlin实现一个简单的TCP自定义协议
      这篇文章主要讲解了“怎么基于Kotlin实现一个简单的TCP自定义协议”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么基于Kotlin实现一个简单的TCP...
      99+
      2022-10-19
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作