winfrom+Fleck 上传文件

article/2025/10/6 5:48:07

 

最近这个项目要做一个Winfrom上传Execl到服务器。

就想到之前用Fleck做的一个小功能,但是客户端Web端的。百度吧,看有没有办法,开始找到fw4 ,但是要引用它的dll,是可以,继续找了会结果找到ClientWebSocket,只需要using System.Net.WebSockets;就好了,想着去试试。

网上很多Fleck的例子,server.Start 中只需要加上  socket.OnBinary = file =>{......},具体后面有图。

下面是客户端的:

ClientWebSocket ws = new ClientWebSocket();
        //创建WebSocket
        static string IP = ConfigurationManager.AppSettings["IP"];
        static string Point = ConfigurationManager.AppSettings["Point"];
        string url = "ws://"+ IP + ":"+ Point;

连接ws:

async void ClientWebSocketConnect(){try{if (ws.State != WebSocketState.Open){ws = new ClientWebSocket();await ws.ConnectAsync(new Uri(url), CancellationToken.None);ArraySegment<byte> bytesReceived = new ArraySegment<byte>(new byte[100]);WebSocketReceiveResult result = awaitws.ReceiveAsync(bytesReceived, CancellationToken.None);var str = Encoding.UTF8.GetString(bytesReceived.Array, 0, result.Count);label1.ForeColor = System.Drawing.Color.Green;label1.Text = str;}else{await ws.ConnectAsync(new Uri(url), CancellationToken.None);}}catch(Exception ex){label1.Text = ex.Message;}}
        /// <summary>/// 关闭断开/// </summary>async void ClientWebSocketClose(){if (ws.State == WebSocketState.Open || ws.State == WebSocketState.CloseReceived){await ws.CloseAsync(WebSocketCloseStatus.NormalClosure, "用户关闭", CancellationToken.None);ws.Dispose();}}

另外给Form1_FormClosing事件加了关闭连接,不然线程一直在,每次重启服务端就重新连接了。

用OpenFileDialog选择一个execl,上传

        /// <summary>/// 上传文件/// </summary>async void UpFile(){if (ws.State == WebSocketState.Open){// 用文件流打开用户要发送的文件;using (FileStream fs = new FileStream(txtSelectFile.Text, FileMode.Open)){//获取文件的名称和扩展名  string fileName = System.IO.Path.GetFileName(txtSelectFile.Text);//文件的名称转byte[] 利用了web上面url编码的功能,带了编码,避免二进制过来汉字乱码byte[] arrfileName = System.Web.HttpUtility.UrlEncodeToBytes(fileName, Encoding.GetEncoding("GB2312"));//string//分隔符byte[] arr_fgf = System.Text.Encoding.UTF8.GetBytes("|");//定义数组 赋值计算总长度byte[] arrFile = new byte[fs.Length + arrfileName.Length + arr_fgf.Length];//组装字符串的方式//把arrfileName复制到arrFileArray.Copy(arrfileName, arrFile, arrfileName.Length);//把arr_fgf复制到arrFile,在arrfileName之后Array.Copy(arr_fgf, 0, arrFile, arrfileName.Length, arr_fgf.Length);//把文件流写入arrFile指定位置fs.Read(arrFile, (arrfileName.Length + arr_fgf.Length), (arrFile.Length - arrfileName.Length - arr_fgf.Length));  // 将文件中的数据读到arrFile数组中;//以二进制方式发送WebSocketvar buffer = new ArraySegment<byte>(arrFile);await ws.SendAsync(buffer, WebSocketMessageType.Binary, true, CancellationToken.None);//清理控件txtSelectFile.Clear();//while (true)//{ArraySegment<byte> bytesReceived = new ArraySegment<byte>(new byte[100]);//接收数据WebSocketReceiveResult result = await ws.ReceiveAsync(bytesReceived, CancellationToken.None);//byte[]转stringvar str = Encoding.UTF8.GetString(bytesReceived.Array, 0, result.Count);//if (str.Length > 0)//{if(str.Contains("上传成功"))label1.ForeColor = System.Drawing.Color.Green;elselabel1.ForeColor = System.Drawing.Color.Red;label1.Text = str;//    return;//}//}}}}

这句是核心,选用二进制的方式

因为数据库要保存文件名称,以及文件路径,方便查找,就顺带把名字传过去了,是以 名称|文件 的方式来发送的。

文件的名称转byte[] 利用了web上面url编码的功能,带了编码,避免二进制过来汉字乱码,这个坑坑了大半天,逼得无奈用Web上的方法来处理了。测试的话就没得必要写这么麻烦。。。

 

 

服务端:

接收客户端传过来的byte[],直接写入文件,返回消息。

 

关键点都很简单,过程有点乱。。。然后把这个改成服务。。嗯嗯,差不多了。。。

 


http://chatgpt.dhexx.cn/article/iu7DtkC3.shtml

相关文章

C#工作总结(一):Fleck的WebSocket使用

一.引子&#xff08;Foreword&#xff09; 最近公司里面要做窗体和网页交互的功能。网上找了一下资料&#xff0c;这里做一个简单的扩充和整理&#xff0c;部分内容可能是摘自其他博客&#xff0c;这里会注明出处和原文地址供大家和自己日后查阅。 二.基础知识&#xff08;Foun…

Fleck说明文档翻译

CSDN ZslLoveMiwa的博客 Fleck Fleck是一个在C#中的WebSocket服务器端的一个实现.。分支自Nugget项目, Fleck不需要任何的继承、容器亦或是需要增加的引用就可以使用。 实例 下面是一个把客户端网页发来的消息回发到客户端的服务器程序。 var server new WebSocketServer(&q…

fleck 客户端_C#中使用Fleck实现WebSocket通信简例

Fleck是一个开源的使用C#封装的WebSocket服务端工具库。 一、服务端搭建 这里选择在.net core 2.1框架下新建了一个控制台程序 在项目里使用NuGet引入Fleck包 NuGet引入Fleck包 其它方式也可以,最终引入项目里都是Fleck.dll Fleck.dll 二、服务端实例 Github上的简单例子: 简…

Fleck WebSocket使用

作为笔记存储. 最近公司有这方面的使用需求。在网上查了一些资料后。得到了想要的结果。以下记录摘抄至网上资料 1.首先,服务端。项目NuGet直接引用Fleck类库。 code: 1 //客户端url以及其对应的Socket对象字典2 IDictionary<string, IWebSocket…

车牌识别技术原理

车牌识别技术原理 车牌识别技术原理都是一样的&#xff0c;具体流程如下&#xff1a;图像捕捉与获取、车牌定位、字符分割字符识别、输出结果。不一样的是在上述环节中采用不同的技术&#xff0c;比如作为核心技术的车牌定位&#xff0c;就可能用到(1)自适应边界搜索法、(2)区…

python实现车牌识别

原始图象 代码 from hyperlpr import HyperLPR_plate_recognition import cv2 from PIL import ImageFont, ImageDraw, Image import numpy as npimage cv2.imread("car.jpg")#读入图片 resultHyperLPR_plate_recognition(image)#识别车牌 plate result[0][0] #…

基于形态学处理的车牌提取,字符分割和车牌识别算法matlab仿真

目录 1.算法仿真效果 2.MATLAB核心程序 3.算法涉及理论知识概要 4.完整MATLAB 1.算法仿真效果 matlab2022a仿真结果如下&#xff1a; 2.MATLAB核心程序 ........................................................................... figure(8);subplot(3,2,2),imshow(d…

车牌识别算法介绍与实践

汽车牌照自动识别整个处理过程分为预处理、边缘提取、车牌定位、字符分割、字符识别五大模块&#xff0c;其中字符识别过程主要由以下3个部分组成&#xff1a; ①正确地分割文字图像区域&#xff1b; ②正确的分离单个文字&#xff1b; ③正确识别单个字符。 用MATLAB软件编…

基于android的车牌识别程序,基于Android平台车牌识别算法,实现手机识别车牌

原标题:基于Android平台车牌识别算法,实现手机识别车牌 近年来,随着移动行业的爆发式发展,手机配置不断提高,基于手机平台的信息采集、图像处理、数据传输等方面的研究也成为了热点,这使得基于手机平台上的车牌识别成为可能。传统的车牌识别系统一般都基于固定的桌面平台…

【车牌识别】基于HOG特征提取和GRNN网络的车牌识别算法matlab仿真

1.软件版本 matlab2017b 2.系统原理 从图的算法流程图可知&#xff0c;基于车牌图像字符特征提取和神经网络的识别算法其首先将训练样本数据进行预处理&#xff0c;得到质量较高的样本数据&#xff0c;然后对这些样本数据进行HOG特征提取&#xff0c;再将特征数据通过神经网络…

【XLPNet车牌识别算法】第二章 检测部分-算法篇1

【XLPNet车牌识别算法】第二章 检测部分-算法篇1 1. XLPNet检测算法前言2. XLPNet检测算法详解2.1 起源2.2 算法细节2.1 算法命名2.2 数据集2.3 预备知识2.4 核心&#xff1a;旋转高斯分布&#xff08;Rotated Gaussian Distribution&#xff09;2.4.1 基于高斯策略的样本分配2…

车牌识别算法 基于yolov5的车牌检测+crnn中文车牌识别 支持12种中文车牌识别

yolov5 车牌识别算法&#xff0c;支持12种中文车牌类型 基于yolov5的车牌检测 车牌矫正以及 基于CRNN的车牌识别 1.单行蓝牌 2.单行黄牌 3.新能源车牌 4.白色警用车牌 5 教练车牌 6 武警车牌 7 双层黄牌 8 双层武警 9 使馆车牌 10 港澳牌车 11 双层农用车牌 12 民航车牌 效果如…

大陆车牌识别算法的背景与技术

我们写过一些关于车牌识别的相关算法发展&#xff0c;随着近两年车牌识别技术的发展、车牌类型的变化以及识别标准的规范化&#xff0c;我们重新梳理了关于大陆车牌识别的技术以及相关背景。文章主要分为三个部分&#xff0c;首先回顾一下目前大陆车牌的种类&#xff0c;第二部…

车牌识别调研总结

来自巴西阿雷格里港大学的学者发表于ECCV2018的论文 http://url.cn/5tnTl9p 《License Plate Detection and Recognition in Unconstrained Scenarios》&#xff0c;给出了一整套完整的车牌识别系统设计&#xff0c;着眼于解决在非限定场景有挑战的车牌识别应用&#xff0c;其性…

超高效车牌识别算法

核心参考文献 陈进 《车牌识别系统关键技术的研究》 文章相关下载资源 算法动态库 https://download.csdn.net/download/hobbitdream/10549960 演示工程 https://download.csdn.net/download/hobbitdream/10549965 算法基本实现原理 整个车牌识别算法包括两个部分&#x…

车牌识别算法实践(一):先验知识

一般来说&#xff0c;一个完整的车牌识别系统的处理流程包括图像输入、车牌提取、字符分割、字符识别和结果输出这五部分。其中车牌提取、字符分割和字符识别是较重要的部分&#xff0c;而车牌提取尤为关键&#xff0c;采用哪种算法或算法组合决定了整个系统的性能。 本人从多年…

基于matlab车牌识别算法

牌照自动识别是一项利用车辆的动态视频或静态图像进行牌照号码、牌照颜色自动识别的模式识别技术。其硬件基础一般包括触发设备、摄像设备、照明设备、图像采集设备、识别车牌号码的处理机等&#xff0c;其软件核心包括车牌定位算法、车牌字符分割算法和光学字符识别算法等。某…

【毕业设计】深度学习 YOLO 实现车牌识别算法

文章目录 0 前言1 课题介绍2 算法简介2.1网络架构 3 数据准备4 模型训练5 实现效果5.1 图片识别效果5.2视频识别效果 6 部分关键代码7 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往…

LPRNet车牌识别算法?其实没有想象那么难

在停车场、小区的出入口&#xff0c;高速公路收费站&#xff0c;我们经常看到自动识别车辆车牌信息的机器&#xff0c;那么车牌识别是如何工作的呢&#xff1f;车牌识别系统应用主要用于记录车辆的车牌号码&#xff0c;出入时间&#xff0c;可实现自动化、规范化管理&#xff0…

车牌识别算法 matlab,车牌识别算法及其MATLAB实现

一.算法 读取拍摄图像-->截取车牌部分 --> 识别车牌 图像预处理: 将图像经过图像灰度化、图像增强、边缘提取、二值化等操作&#xff0c;转换成便于车牌定位的二值化图像&#xff1b; 车牌定位: 利用车牌的边缘、形状等特征&#xff0c;再结合Roberts 算子边缘检测、数字…