C# Winform 多线程 SOCKET 文件上传,下载

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# Winform 多线程 SOCKET 文件上传,下载相关的知识,希望对你有一定的参考价值。

一个S, 服务器端
N个C,客户端

上传
S随时监听端口,C发来上传文件请求后开始接收文件,如果网络中断,下次C再连接的时候,可以支持上一次文件断点续传

下载
S随时监听端口,C发来下载文件请求后开始发送文件,如果网络中断,下次C再连接的时候,可以支持上一次文件断点续传

参考技术A 这可是很麻烦的,自己到网上找吧 参考技术B 文件数据流传输方法,自己定义握手协议就可以实现,底层SOCKET的代码网上多的是本回答被提问者和网友采纳 参考技术C 这个很麻烦的网上找一下教程吧。 参考技术D 服务器保存上传的每个(未完成)文件信息(如:已上传的流的位置)及特定的文件标识,客户端保存未完成(下载)的文件信息及特定标识;每次上传或下载文件时将相关信息写入协议中,传送到对方,对方解析后再进行数据传输。
如果客户端较多的话,可以考虑客户端先连接到服务器,再由服务器进行反连接。这样不会阻塞服务器的监听。

C# winForm Socket 多线程 编程 关闭问题

关闭窗体时为什么在进程中还有exe程序,还有的就是如果想做个重置,应该如何做,关闭Socket和线程的顺序

2中方式,除主线程外其他线程设置为后台线程,即background thread,这是线程创建时的一个属性,另一种就是应用程序退出时的事件里手动退出线程
----
void Application_Exit(object sender,args e)

//thread.abort();



好像是这样写吧,好久没用C#了,有点忘了,MSDN上有详细的说明

socket是非托管资源,我的理解是最好首先清理(在其他线程前);
参考技术A 关闭窗口 ,你应该用appliction.exit(),另外建议先关闭 通讯在关闭线程。先关闭线程 会导致,你得程序死掉的。 参考技术B 设置线程为后台线程(IsBackground),否则子线程未结束,主线程结束后不会结束子线程。如System.Threading.Thread thread = new System.Threading.Thread();
thread.IsBackground = true;
参考技术C 多线程程序,如果是直接关闭窗口的话,只会关闭主线程,关闭的时候要用application.exit(),才会关闭其它的线程 参考技术D application.exit()是结束程序this.close()是关闭当前窗体

以上是关于C# Winform 多线程 SOCKET 文件上传,下载的主要内容,如果未能解决你的问题,请参考以下文章

C# winform多线程案例

C# winform 多线程更新数据,UI卡顿现象。

C#关于winform线程更新form的文本框输出的问题

c# 多线程 ui winform界面

一个C# (队列多任务+多线程处理)对象的winform demo

我用C# winform多线程,窗口就假死,等到线程全部完成了才可以点击。请问要怎么才可以让窗口不假死。