0%

高速传输文件的办法

一点点小说明

有时候,需要在电脑与电脑之间传输一些文件,用U盘有时候不太方便,或者遇到U盘读不出来的奇葩情况,真是一出接一出,于是想办法。
同一个局域网下的电脑对传的话,一般网速能达到上限,速度不错,按100M的路由器来看,速度一般能在10MB/s左右。

局域网传输————Dukto

网上找到一个不错的软件————DuktoR6,这货速度虽然不快,我这儿测试速度3MB/s左右,不过它可用于大部分平台,windows,linux,Android,ios,windows phone,windows 10 mobile/pc,涵盖了日常能用到的大部分平台,连windows phone和windows 10 mobile都有,不得不说是一个良心软件。

使用方法是:两个终端(电脑或者手机)在同一个局域网下,打开DuktoR6,正常情况下软件会自动找到其它客户端,如上图,如果找不到的话,便点击 “IP connection” ,输入接受端的IP地址,若不知道接收端的IP地址的话,在接收端点击最下面三个图标的中间那个图标,就知道了,若是接收端同时具有多个IP地址,就得找到与发送端同一个网段得IP地址才行,用同样的办法查看发送端的IP地址,看IP地址的前三部分的相似度,在大多数情况下,普通路由器分配给终端的IP地址都形如“192.168.1.X或者192.168.0.X。

找到接收端之后,选择要发送的文件或文件夹便可以发送了。

更加高速的办法

本方法适用于拷贝体积较大的文件,几G甚至几十G的文件拷贝用这种办法,时间会大大缩短。

现在的电脑大都配备了千兆网卡,理论传输速度是能超过100MB/s的,不过受限于运营商带宽或者路由器,一般网速只有几MB/s,如学校所用的翼讯,带宽为6M,最高下载持续下载速度也不到1MB/s,网卡性能浪费太多了。

两台电脑对传文件,若使用网线直接将两台电脑连接,这样带宽理论上是能达到网卡上限的。

原理说明

在上面所说的DuktoR6传输办法中,需要发送端和接收端都安装软件,有时候,这个反而不方便(比如两人都没有携带可以传输的设备,U盘什么的,别说手机了,有些手机不装驱动是没办法北电脑识别的)。

这里我使用的是最常见的直接通过链接下载的方法,也就是说通过TCP/IP协议,说得简单一点,就是拿浏览器直接下载了。

详细说明

安装nginx

如上面所说,想要通过浏览器直接下载对方电脑上的文件,得对方的电脑开启了web服务器,这个东西不难找,我使用的是nginx,点我下载
上面的下载链接是针对windows系统的,基于debian的系统使用下面的命令安装nginx

    sudo apt-get install nginx

基于redhat的系统使用下面的命令安装nginx

    sudo yum install nginx

下面以windows下的nginx使用方法为例

开启web服务器

使用命令提示符(在开始按钮上点击鼠标右键,选择命令提示符即可),然后切换到nginx所在的文件夹,我写本文时nginx版本为1.11.6,解压下载的压缩包,所得目录结构如下

│  nginx.exe
│  
├─conf
│      fastcgi.conf
│      fastcgi_params
│      koi-utf
│      koi-win
│      mime.types
│      nginx.conf
│      scgi_params
│      uwsgi_params
│      win-utf
│      
├─contrib
│  │  geo2nginx.pl
│  │  README
│  │  
│  ├─unicode2nginx
│  │      koi-utf
│  │      unicode-to-nginx.pl
│  │      win-utf
│  │      
│  └─vim
│      ├─ftdetect
│      │      nginx.vim
│      │      
│      ├─indent
│      │      nginx.vim
│      │      
│      └─syntax
│              nginx.vim
│              
├─docs
│      CHANGES
│      CHANGES.ru
│      LICENSE
│      OpenSSL.LICENSE
│      PCRE.LICENCE
│      README
│      zlib.LICENSE
│      
├─html
│      50x.html
│      index.html
│      
├─logs
└─temp

输入命令

start nginx

看到一个黑框一闪而过,这个时候nginx已经启动了,在浏览器地址栏输入localhost,即可看到这样的画面

我们同样可以在任务管理器查看进程

搭建静态文件服务器

这一步做完,我们就已经成功一大半了,搭建静态文件服务器的办法是更改conf文件夹下的nginx.conf文件。
不管用什么办法(我使用了记事本),编辑nginx.conf文件,将内容更改如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#user  nobody;
worker_processes 1;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;

events {
worker_connections 1024;
}

http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
charset gbk;
server_name localhost;
client_max_body_size 4G;
root Directory_add;
location / {
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}
}

}

自行更改Directory_ add为被传输文件的目录,比如我再D盘的download文件夹下的文件是我想要传输被对方的,Directory_add就改成D:\Download
此时配置文件已经修改完成,使用命令

1
nginx -s reload

重载配置,使其生效,比如这里我改成F:\Minecraft,重载配置文件后,浏览器打开localhost,界面是这样的:

这个时候,只要别人能打开这台电脑的IP,就可以直接点击相应的文件下载了。

开始传输

前面已经说过,原理便是搭建一个web静态文件服务器,这个时候,只要别人能连接打开服务器的电脑,便可以下载配置好的目录里面的文件了。

怎么连接呢?

第一种办法是仍然连接同一个局域网

第二种办法便是直接用网线连接两台电脑,没错,一根网线,两头都是电脑。
不过普通网线没办法使得两台电脑处于同一台局域网,要么使用交叉网线(这种网线一般用不到,所以不好找),要么参考这个办法的方法2的第四和第五个步骤

其实,绕来绕去,就是要让两台电脑能处于同一个网段下面,不管是连接同一个路由器还是用网线直连,目的都是这个。

PS的一些东西

在配置文件中,有这样一行

charset gbk;

因为我是在windows内进行的演示,不用gbk的话,遇到中文名的文件会乱码,如果是linux系统的话,需要删除这一行或者把gbk改成utf-8。

并且,nginx不能放在含中文的目录下面,Dectory_add也不能是含有中文或者空格的目录。