作者: qiaoke_song
查看: 13166|回复: 184

[源码] 【文件传输示例】C# WinForm WebSocket (非浏览器)

  [复制链接]
qiaoke_song 发表于 2018-5-14 20:51:58 | 显示全部楼层 |阅读模式
查看: 13166|回复: 184
说明:
这是做的比较认真的一个练习,因为基本上每段都加上了中文注释。
一、设置
服务端:在Server文件夹内,SystemNet_define.cs
设置服务地址,这里设置为:
public static string ServerAddress = "ws://127.0.0.1:9999"; // 服务地址、端口
密钥、套接字分隔符都可自行设置。
客户端:Client文件夹内,SystemNet_define.cs
设置链接地址:
public static string ServerAddress = "ws://127.0.0.1:9999/FServer"; // 服务地址,接口
密钥、分隔符与服务端一致就可以。

套接字只需在服务端随意设置为不同的短语就可以,客户端登录后,会从自行从服务端取得并判断,
所以在判断代码中用不了switch,全部用 if else 了。

因为不会搭建rstp服务,所以在媒体预览上面就用IIS了,将IIS目录指向SERVER_FILES文件夹,
设置Server文件夹内,SystemNet_define.cs文件的套接字:
public string Transport_StreamMedia = "http://127.0.0.1:8081"; // 媒体文件预览地址
为IIS地址、端口就可以了,如IIS为80端口,直接"http://127.0.0.1"

二、传输文件
上传:客户端将文件分割为服务端限定的大小数据包,加上标识,发送到服务端,服务端接收后合并数据包为文件。
下载:与上传相同。
有新文件后,客户端会有新文件提醒,点击顶部刷新可更新当前显示。

分割文件的每个包为一段Base64字符串,并进行压缩,还原文件先解压缩字符串在合并Base64字符串,转为文件,
使用Base64字符串是因为传输byte,图像、媒体文件后打开错误,比如传输byte,生成图像文件是需要指定格式,
才能正确生成,等等。所以Base64最然大了点,但经过压缩后传输还可以。
也可用其它传输方法,有更高的效率,这里只是做练习。可以参考压缩文件内WebSocket-Sharp文件传输例子。

三、运行
根据你的需要修改、编译完毕后,先运行在Server文件夹内File_transferServer.exe
再运行Client文件夹内File_transferClient.exe
用户名:1000~1028,密码:123456

四、包含文件
websocket-sharp-master组件源代码,可在github上下载最新版
SQK_UI组件修改代码,可在http://bbs.cskin.net/thread-4394-1-1.html下载demo及说明
VLC的媒体文件DLL库,在Client文件夹内plugins目录

五、没做部分
1、服务端管理界面没做,只是打开运行就可以,可自行写用户管理等;
2、客户端:上传文件限制大小、上传下载数量限制没加上去,规则已经加到数据结构里面了,只是没有判断;
3、发送文件给用户个人部分没做,原理相同懒得写了。
4、会话没做,因为前面做过了,http://bbs.cskin.net/thread-4394-1-1.html
其他的都有。

另:注意LinQ语句筛选使用Find或FindALL,使用Where在线程中会出问题。登录时,使用“微软拼音”会出故障,换个输入法
数据库用Access在多用户使用会有问题,可以换其他库,
只是学习过程中的一个练习。
效果图:

C# WinForm WebSocket 文件传输示例(非浏览器)

C# WinForm WebSocket 文件传输示例(非浏览器)

C# WinForm WebSocket 文件传输示例(非浏览器)

C# WinForm WebSocket 文件传输示例(非浏览器)

C# WinForm WebSocket 文件传输示例(非浏览器)

C# WinForm WebSocket 文件传输示例(非浏览器)


源码下载-回复可见:
游客,如果您要查看本帖隐藏内容请回复


回复 论坛版权

使用道具 举报

qq744980696 发表于 2018-5-15 00:03:03 | 显示全部楼层
看看看看看看看看看看
zzusyy 发表于 2018-5-15 07:53:32 | 显示全部楼层
回复下载
回复

使用道具 举报

zzusyy 发表于 2018-5-15 07:59:52 | 显示全部楼层
你好提取码是多少呀
lightweight 发表于 2018-5-15 09:50:29 | 显示全部楼层
谢谢分享,来看看
乔克斯 发表于 2018-5-15 13:14:00 | 显示全部楼层
百度网盘没有发提取码,无法下载。
蛋C饭 发表于 2018-5-15 13:21:21 | 显示全部楼层
看看 看看 看
hukun19930617 发表于 2018-5-15 14:38:14 | 显示全部楼层
学习学习
回复

使用道具 举报

andy12 发表于 2018-5-15 16:29:11 | 显示全部楼层
借鉴下界面
qqxiongyi 发表于 2018-5-15 16:46:30 | 显示全部楼层
漂亮漂亮
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入CSkin论坛

本版积分规则

QQ|申请友链|小黑屋|手机版|Archiver|CSkin ( 粤ICP备13070794号

Powered by Discuz! X3.2  © 2001-2013 Comsenz Inc.  Designed by ARTERY.cn
GMT+8, 2018-9-22 09:35, Processed in 0.855554 second(s), 33 queries , Gzip On.

快速回复 返回顶部 返回列表