C++ p2p 实现多线程文件传输
时间 来源未知 作者点击 次
在如今的网络应用中,文件的传送是重要的功能之一,也是共享的基
在如今的网络应用中,文件的传送是重要的功能之一,也是共享的基础。一些
重要的协议像 , 等都支持文件的传送。尤其是 ,它的全称 就是
“文件传送协议”,当 初的工程师设计这一协议就是为了解决网络间的文件传送
问题,而且以其稳定,高速,简单而一直保持着很大的生命力。作为一个程序
员,使用这些现有的协议传送 文件相当简单,不过,它们只适用于服务器模式
中。这样,当我们想在点与点之间传送文件就不适用了或相当麻烦,有一种大
刀小用的意味。笔者一直想寻求一种简 单有效,且具备多线程断点续传的方法
来实现点与点之间的文件传送问题,经过大量的翻阅资料与测试,终于实现了,
现把它共享出来,与大家分享。
我写了一个以此为基础的实用程序(网络传圣,包含源代码),可用了基于
的电脑上,供大家学习。
实现方法(++,基于 协议)如下: 内容来自 。
仍辨用服务器与客户模式,需分别对其设计与编程。
服务器端较简单,主要就是加入待传文件,监听客户,和传送文件。而那些断
点续传的功能,以及文件的管理都放在客户端上。
一、服务器端
首先介绍服务器端:
最开始我们要定义一个简单的协议,也就是定义一个服务器端与客户端听得懂
的语言。而为了把问题简化,我就让服务器只要听懂两句话,一就是客户说“我
要读文件信息”,二就是“我准备好了,可以传文件了”。
由于要实现多线程,必须把功能独立出来,且包装成线程,首先建一个监听线
程,主要负责接入客户,并启动另一个客户线程。我用 实现如下:
!"# !$%&'()*+" &,,)-
.
由主函数传来的套接字
/"01,('2*/"01-&,,)3
开始监听
)2&'*,('45-3
如果错就显示信息