代码:

https://github.com/AltairCA/.netcore2.0-websocketServerExample

查找安装:WebSocketSharp

解析包:这个可以:

/// <summary>
/// 解析客户端发送来的数据
/// </summary>
/// <returns>The data.</returns>
/// <param name="recBytes">Rec bytes.</param>
/// <param name="length">Length.</param>
private string AnalyzeClientData (byte[] recBytes, int length){
if (length < 2) {
return string.Empty;}bool fin = (recBytes [0] & 0x80) == 0x80; // 1bit,1表示最后一帧
if (!fin) {
return string.Empty;// 超过一帧暂不处理 }bool mask_flag = (recBytes [1] & 0x80) == 0x80; // 是否包含掩码
if (!mask_flag) {
return string.Empty;// 不包含掩码的暂不处理}int payload_len = recBytes [1] & 0x7F; // 数据长度  byte[] masks = new byte[4];
byte[] payload_data;if (payload_len == 126) {Array.Copy (recBytes, 4, masks, 0, 4);payload_len = (UInt16)(recBytes [2] << 8 | recBytes [3]);payload_data = new byte[payload_len];Array.Copy (recBytes, 8, payload_data, 0, payload_len);} else if (payload_len == 127) {Array.Copy (recBytes, 10, masks, 0, 4);
byte[] uInt64Bytes = new byte[8];
for (int i = 0; i < 8; i++) {uInt64Bytes [i] = recBytes [9 - i];}UInt64 len = BitConverter.ToUInt64 (uInt64Bytes, 0);payload_data = new byte[len];
for (UInt64 i = 0; i < len; i++) {payload_data [i] = recBytes [i + 14];}} else {Array.Copy (recBytes, 2, masks, 0, 4);payload_data = new byte[payload_len];Array.Copy (recBytes, 6, payload_data, 0, payload_len);}for (var i = 0; i < payload_len; i++) {payload_data [i] = (byte)(payload_data [i] ^ masks [i % 4]);}return Encoding.UTF8.GetString (payload_data);}

这个是不是也可以:

using System;
using System.Collections.Generic;
using System.Windows.Forms;
using Newtonsoft.Json;
using WebSocketSharp;
using WebSocketSharp.Server;namespace PrintPlugin
{public partial class Form_Main : Form{public Form_Main(){InitializeComponent();}private void Form_Main_Load(object sender, EventArgs e){var wssv = new WebSocketServer(54321);wssv.AddWebSocketService<PrintServer>("/PrintServer");//添加服务侦听,第一个是类。第二个是调用的接口wssv.Start();Console.WriteLine("打印服务运行中...");// wssv.Stop();}class PrintServer : WebSocketBehavior{static Dictionary<string, string> dClientAll = new Dictionary<string, string>();protected override void OnOpen(){dClientAll.Add(base.Context.SecWebSocketKey, base.Context.UserEndPoint.ToString());Console.WriteLine("连接打开" + dClientAll[base.Context.SecWebSocketKey] + "|" + DateTime.Now.ToString());base.OnOpen();}protected override void OnMessage(MessageEventArgs e){var data = e.Data + "|" + DateTime.Now.ToString();Console.WriteLine("接收数据" + dClientAll[base.Context.SecWebSocketKey] + "|" + data);var retjson = JsonConvert.SerializeObject(new { code = 200, msg = data });Send(retjson);}protected override void OnClose(CloseEventArgs e){Console.WriteLine("连接关闭" + dClientAll[base.Context.SecWebSocketKey] + "|" + DateTime.Now.ToString());base.OnClose(e);}protected override void OnError(ErrorEventArgs e){Console.WriteLine("错误信息" + dClientAll[base.Context.SecWebSocketKey] + "|" + DateTime.Now.ToString());base.OnError(e);}}}
}

c# websocketServer相关推荐

  1. c# websocketServer传图片

    c# websocketServer传图片 传一次图片可以,但是传多次就不行 缓存?

  2. python实现WebsocketServer 服务端

    python 实现weisocket服务端用到的库为:websocket-server 0.4  : https://pypi.org/project/websocket-server/0.4/ ht ...

  3. python websocket server模块_Python 3.5.2实现websocket服务端(四): WebSocketServer类实现...

    #删除连接,从集合中删除连接对象item def deleteconnection(item): global connectionlist del connectionlist['connectio ...

  4. websocket的WebSocketServer无法注入service

    原因是因为spring对象的创建都是以单例模式创建的,但是websocket的创建是spring启动是创建一次,然后每一个用户连接,都会创建一次webscket对象,所以当你启动项目时,你想要注入的对 ...

  5. 基于.Net TcpListener 实现 WebSocketServer 通讯

    续接上文,上文已经实现了一个可用的IOCP 完成端口服务了. 本来是准备用IOCP实现服务的,但是,在实现过程中出现了Bug,短时间搞不定. 就换另外一种技术 TcpListener 来实现. 这篇文 ...

  6. SuperSocket.WebSocket WebSocketServer设置文本编码

    SuperSocket.WebSocket WebSocketServer 设置文本编码 SuperSocket.WebSocket WebSocketServer 设置文本编码 SuperSocke ...

  7. py WebsocketServer创建的服务器与vue构建前端页面相互收发信息——猪猪侠方丈-px

    py WebsocketServer创建的服务器与vue构建前端页面相互收发信息 环境:py3 pycharm WebsocketServer0.5.1 vue2 废话少说上代码pycharm中.py ...

  8. c# websocketServer base64乱码

    下载地址: https://download.csdn.net/download/peiranshuiyu/10168136 这个接收图片base64乱码,后来查原因: byte[102400]的参数 ...

  9. html实时显示log,websocketd 实现浏览器查看服务器实时日志

    操作系统 CentOS7 下载 websocketd 安装 nc 命令 yum install nmap-ncat 创建监听脚本 cat > cmd.sh < #!/bin/bash pk ...

最新文章

  1. Flutter开发之iOS真机调试(六)
  2. 聊聊reactive streams的schedulers
  3. 揭开雷达的面纱(科普)探测能力
  4. 使用sklearn进行数据预处理 —— 归一化/标准化/正则化
  5. 关于python测试webservice接口的视频分享
  6. C++ STL 遍历 map 的时候如何删除其中的 element
  7. 用一句话证明你是程序员,你会怎么说
  8. python修改列表指定位置的_Python 基础教程—列表(1)
  9. 半路学编程,可以成为大牛吗?
  10. learning-oracle-how2j
  11. HDU 5143 NPY and arithmetic progression(思维)
  12. pscc2018安装服务器无响应,强大的功能无法使用,大神教你一招解决PSCC2018无法安装扩展插件...
  13. 360 2015校园招聘
  14. mysql binlog event_MySQL binlog中的事件类型详解
  15. video标签的使用
  16. 子弹朝向屏幕准星发射
  17. 亚马逊云科技2022中国企业出海季系列直播活动今夏盛启
  18. ios开发描述文件添加新设备
  19. 携程旅行采集抓取爬虫python爬取
  20. IDEA导出jar打包成exe应用程序

热门文章

  1. java设计模式---状态模式
  2. Spark编程基础(Python版)
  3. 服务器巡检文档,服务器巡检工具
  4. gnu linux mysql下载_linux下的navicat for mysql下载
  5. 证书到期了_注意!出口沙特所有扁钢制品证书将于8月26日到期 ,需要强制QM
  6. NeHe教程Qt实现——lesson11
  7. mysql批量导入 导出数据_MySQL批量导入导出数据
  8. jackson 反序列化string_Java 中使用Jackson反序列化
  9. mega_[MEGA DEAL]终极Java专家认证捆绑包(98%)
  10. 为什么用pyqt的不多_家具看起来都差不多?其实不一样!